中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 20:46
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [分享]关于PrintScreen与屏幕截图
可打印版本  1,662 / 1
第1楼 qinchun36 发表于 2010-01-26 14:30
高级用户 发帖 400 积分 609
[分享]关于PrintScreen与屏幕截图
我们很多时候想要截屏,全屏或者当前窗口。

会VBS的都知道有个 SendKeys 方法能够发送按键,于是试着用它发送 PrintScreen,结果不行,官方文档中也说了就这个键不能发送,原因好像是没有与之对应的ASCII码。

因此纯的 VBS 是不能完成这个功能的。

但是如果机器上装了Microsoft Office Word (非绿色版)的话,系统中会多出许多能用的对象,其中有一个叫 Word.Basic ,它也有一个 SendKeys 方法,VBS利用这个方法就能够发送 PrintScreen :

更好记的


如果要截取当前活动窗口的话就用 "%{PRTSC}"
至于如何保证在截取的时候保证那个活动窗口还是当前的活动窗口,可以有很多办法,比如你加入一个等待时间(WScript.Sleep)双击这个脚本后再切换到那个窗口,或者脚本是循环执行间隔一定时间截取一次,或者你知道哪个窗口的标题的话在前加上 CreateObject("WScript.Shell").AppActivate "标题或结尾的字符串" 激活它之后马上截取。。。

这样就能够模拟键盘按下PrintScreen,并且把图像信息保存在剪贴板中。
很遗憾,我们并不能在桌面或文件夹中按 Ctrl+V 把它粘贴下来,你想想,你要得到的是特定格式的图片(jpg、bmp、gif等),而剪贴板中的只包含像素信息,无法转换的,只能粘贴到能编辑或者显示图片的应用程序内,比如Word、画图(mspaint.exe)、写字板(write.exe)等,然后再做处理。
(有方法能将剪贴板的数据保存为图片文件,但不是VBS可以用的,或者又要使用PowerPoint.Application,因此不关注。)

第三方命令行工具 NirCMD 也有个屏幕打印功能,而且很方便,可以将截图保存为多种格式图片文件(.bmp, .gif, .png, .jpg, .tiff )。
(Windows XP/2003/Vista ,GDI+ is required)
截屏主监视器:

截屏所有监视器:

截屏当前活动窗口:

这里活动窗口的处理思路与VBS也很相似,如




参考资料:
How to do a screen capture using VBA --- http://word.mvps.org/FAQS/MacrosVBA/PrtSc.htm
Print Screen in VBScript --- http://www.visualbasicscript.com/m53752.aspx
NirCMD --- http://www.nirsoft.net/utils/nircmd.html
第2楼 moniuming 发表于 2010-01-26 16:34
银牌会员 发帖 574 积分 1,335 来自 广西
一直都用nircmd,呵呵...
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023