Board logo

标题: [系统相关] 【求助】屏幕图文水印的实现_集合贴 [打印本页]

作者: locoman    时间: 2020-10-21 14:19     标题: 【求助】屏幕图文水印的实现_集合贴

《屏幕水印》
核心功能:在电脑屏幕上始终显示着一个警示信息(图片+文字),主要警告别人对屏幕的拍摄或截图行为,就是相当于一个屏幕水印。

需求细节:
一、在电脑屏幕的中心位置显示一张警示图片;
二、在这张警示图片里面指定的位置再显示一些必要的文字信息(如此这样,拍摄或截图者发散出去的图片就被记录一些可追踪的信息了):
    1. 显示当前电脑的“计算机名”;
    2. 显示当前电脑的“硬盘SN”;
    3. 实时动态显示当前系统时间(最好有秒级的实时动态显示);


实现基本思路:
采用在BATHOME论坛上下载的两个工具用bat文件来完成。
BeeNotice.exe(在屏幕上显示文字)
BeePhoto.exe(在屏幕上显示图片)
具体请观察“水印示意图”就能领会需求情况了。

难点:
一、自动根据不同的显示器当前设置的分辨率来确定警示图片的XY坐标位置而确保不同的显示器都能显示在上下左右对称的中心位置;
二、再根据已经确定了的图片位置,将文字信息在图片内部的指定位置上;
三、用文字信息始终实时动态的显示当前系统时间(如:2020年10月20日14:28:46)


bat基本写法:
BeePhoto /p:屏幕水印001.bmp /o:70 /t:120000 /x:330 /y:100
BeeNotice /m:%COMPUTERNAME% /o:100 /f:"宋体" /fh:20 /fw:20 /ftc:"203 203 203" /t:120000 /x:650 /y:200
BeeNotice /m:%date% /o:100 /f:"宋体" /fh:20 /fw:20 /ftc:"203 203 203" /t:120000 /x:750 /y:500
BeeNotice /m:%time% /o:100 /f:"宋体" /fh:20 /fw:20 /ftc:"203 203 203" /t:120000 /x:750 /y:520

哪个取硬盘SN显示就弄不来了以及怎么自动计算控制和综合整合到一个bat文件中去,我就弄不来了!
作者: locoman    时间: 2020-10-21 14:36

本帖最后由 locoman 于 2020-10-21 14:38 编辑

非常感谢@Batcher一直的跟踪支持帮助,特将相关帖子收集整理到此,以便综合统一研究解决。

BeeTextDraw 在屏幕上显示艺术字
http://bbs.bathome.net/thread-56919-1-1.html

BeeNotice - 显示文字到屏幕上
http://bbs.bathome.net/thread-3934-1-1.html

有没办法在cmd窗口里引用图片?
BeePhoto.exe 的说明
http://www.bathome.net/thread-7755-1-1.html

请教BeePhoto.exe(在屏幕上显示图片)怎么用?
http://bbs.bathome.net/thread-56128-1-1.html
作者: peterboy666    时间: 2020-10-21 14:40

想法不错,但不实用.
作者: peterboy666    时间: 2020-10-21 14:43

BeeTextDraw / BeeNotice  这两个很相同,差异性不大.
作者: peterboy666    时间: 2020-10-21 14:44

回复 1# locoman

>哪个取硬盘SN显示就弄不来了
WMIC 可以找出 SN
作者: locoman    时间: 2020-10-21 14:56

本帖最后由 locoman 于 2020-10-21 14:58 编辑

@echo off
set "PictureName=屏幕水印001.bmp"
set "PictureWidth=800"
set "PictureHeight=700"
cd /d "%~dp0"
for /f "tokens=1-2" %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(screen.width&"" ""&screen.height)"^)(close^)') do (
    set "ScreenWidth=%%a"
    set "ScreenHeight=%%b"
)
set /a PositionX=(ScreenWidth-PictureWidth)/2
set /a PositionY=(ScreenHeight-PictureHeight)/2
BeePhoto /p:"%PictureName%" /x:%PositionX% /y:%PositionY% /t:30000 /o:100

这段代码的问题:
一、在WIN10(64位)中,图片能自动居中;
二、在WIN7(32位)中,图片不能自动居中,而是自动靠左0靠上0,且DOS黑窗口显示“拒绝访问”;
三、两个系统运行后,都是会出现黑窗口且不自动关闭。

作者: peterboy666    时间: 2020-10-21 15:04

@echo off
set "ictureName=屏幕水印001.bmp"
set "ictureWidth=800"
set "ictureHeight=700"
cd /d ...
locoman 发表于 2020-10-21 14:56


>一、自动根据不同的显示器当前设置的分辨率

>set "PictureWidth=800"
>set "PictureHeight=700"

你不能将它设为固定值.
作者: locoman    时间: 2020-10-21 15:05

测试图片的大小是800x700的。
作者: Batcher    时间: 2020-10-21 15:30

回复 6# locoman


请参考Q-01观察一下哪一步在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: locoman    时间: 2020-10-21 16:20

回复  locoman


请参考Q-01观察一下哪一步在报错:
Batcher 发表于 2020-10-21 15:30



    就是在win7(32位)没有获取到屏幕的分辨,造成X和Y坐标为负数了。
作者: Batcher    时间: 2020-10-21 16:52

回复 10# locoman


请参考Q-01观察一下哪一行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: peterboy666    时间: 2020-10-21 17:25

就是在win7(32位)没有获取到屏幕的分辨,造成X和Y坐标为负数了。
locoman 发表于 2020-10-21 16:20


你的代码,在 Windows 7 X64 测试正常
  1. @echo off
  2. for /f "tokens=1-2" %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(screen.width&"" ""&screen.height)"^)(close^)') do (
  3.     set "ScreenWidth=%%a"
  4.     set "ScreenHeight=%%b"
  5. echo %%a
  6. echo %%b
  7. )
复制代码

作者: Batcher    时间: 2020-10-21 17:39

回复 1# locoman


试试这样能否动态显示时间:
  1. @echo off
  2. :loop
  3. BeeNotice /m:"%date% %time%" /o:100 /f:"宋体" /fh:20 /fw:20 /ftc:"203 203 203" /t:1000 /x:750 /y:500
  4. REM 如果觉得刷新太快的话,可以加个延时:
  5. REM ping -n 2 127.0.0.1 >nul
  6. goto :loop
复制代码

作者: locoman    时间: 2020-10-21 21:50

本帖最后由 locoman 于 2020-10-21 21:54 编辑
回复  locoman


试试这样能否动态显示时间:
Batcher 发表于 2020-10-21 17:39



    谢谢您不懈的研究解决!真难为您了!!

在WIN10(64)中测试情况:
1. 时间是有变化,但不是像时间走动那种在变化,而是整体的日期时间字符串在不停的显示/不显示的刷新,每刷新一次当然有时间变化。
2. 显示日期时间时一直有黑窗口在显示着,一旦关闭黑窗口就再也不显示日期时间了!!

作者: Batcher    时间: 2020-10-21 22:07

回复 14# locoman


黑窗口的问题请参考:批处理后台隐藏运行的11种思路
http://bbs.bathome.net/thread-3271-1-1.html
作者: smss    时间: 2022-2-14 17:13

使用PECMDhttps://www.lanzoux.com/b279972/
  1. TEAM SCRN ScrW,ScrH|CALC SeL=%ScrW%/2-100|CALC SeT=%ScrH%-78|TEXT 连网中...请稍等… #0xffff00 L%SeL% T%SeT% R%ScrW% B%ScrH% $30:Microsoft YaHei
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2