中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 22:23
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]关于PrintScreen与屏幕截图 查看 1,665 回复 1
楼 主 [分享]关于PrintScreen与屏幕截图 发表于 2010-01-26 14:30 ·  中国 北京 中电华通通信有限公司
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
我们很多时候想要截屏,全屏或者当前窗口。

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

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

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

更好记的
CreateObject("Word.Basic").SendKeys "{PRTSC}"


如果要截取当前活动窗口的话就用 "%{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)
截屏主监视器:
nircmd savescreenshot "D:\temp\Monitor1.jpg"

截屏所有监视器:
nircmd savescreenshotfull "D:\temp\Monitors.png"

截屏当前活动窗口:
nircmd savescreenshotwin "D:\temp\Window.bmp"

这里活动窗口的处理思路与VBS也很相似,如
@echo off
nircmd win activate ititle "标题包含的字符串"
nircmd savescreenshotwin "D:\temp\Window.gif"




参考资料:
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 +5 2010-01-26 16:34
s11ss +7 2010-01-27 08:36
┏━━━━━━┓
┃据说是李先生┃
┠──────┨
┃*ntRSS┃
┗━━━━━━┛
2 发表于 2010-01-26 16:34 ·  中国 北京 阿里云BGP服务器
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
一直都用nircmd,呵呵...
论坛跳转: