[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【求助】屏幕图文水印的实现_集合贴

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

需求细节:
一、在电脑屏幕的中心位置显示一张警示图片;
二、在这张警示图片里面指定的位置再显示一些必要的文字信息(如此这样,拍摄或截图者发散出去的图片就被记录一些可追踪的信息了):
    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: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

TOP

想法不错,但不实用.

TOP

BeeTextDraw / BeeNotice  这两个很相同,差异性不大.

TOP

回复 1# locoman

>哪个取硬盘SN显示就弄不来了
WMIC 可以找出 SN

TOP

本帖最后由 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黑窗口显示“拒绝访问”;
三、两个系统运行后,都是会出现黑窗口且不自动关闭。

TOP

@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"

你不能将它设为固定值.

TOP

测试图片的大小是800x700的。

TOP

回复 6# locoman


请参考Q-01观察一下哪一步在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  locoman


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



    就是在win7(32位)没有获取到屏幕的分辨,造成X和Y坐标为负数了。

TOP

回复 10# locoman


请参考Q-01观察一下哪一行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

就是在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. )
复制代码

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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


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



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

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

TOP

回复 14# locoman


黑窗口的问题请参考:批处理后台隐藏运行的11种思路
http://bbs.bathome.net/thread-3271-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表