文档章节

VBS实现截图功能

adamduan
 adamduan
发布于 2016/11/04 11:47
字数 233
阅读 86
收藏 0

http://www.jb51.net/article/72745.htm

因为实现截屏原本就不是微软设计vbs的初衷,更多的扩展功能是使用者的意愿,所以才会有第三方的出现,实际vbs调用vba也是这种方式,利用的是vba能调用API的特性,查了下网上的代码,调用的是USER32模块中的keybd_event函数实现的截屏

'VBS截屏.vbs
' Win7x64 测试通过(已安装Word2007):
'参考:
' http://qtp.blogspot.com/2010/02/screenshot-vbscript.html
' http://www.fixitscripts.com/problems/take-screenshot-of-current-user-s-session
 
With CreateObject("Word.Basic")
 .Sendkeys "{prtsc}"
 .FileQuit '.AppClose
End With
 
Msgbox "已将屏幕截取到剪贴板。", vbSystemModal+vbInformation, WScript.ScriptName
data = "4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000C00000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000450E6EDA016F0089016F0089016F0089016F0189006F008963701389026F0089E9700B89006F008952696368016F008900000000000000000000000000000000504500004C01010017E773460000000000000000E0000F010B01060000000000000400000000000080110000001000000010000000004000001000000002000004000000000000000400000000000000002000000002000000000000020000000000100000100000000010000010000000000000100000000000000000000000F012000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000000000000000000000000000000000000000000002E646174610000003A030000001000000004000000020000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000020130000000000004D657373616765426F784100476574436F6D6D616E644C696E6541006B657962645F6576656E74004578697450726F6365737300467265654C696272617279004C6F61644C6962726172794100000000757365723332000053637265656E4361746368204279205368696C7978000000B3C9B9A6BDABD7A5CDBCB1A3B4E6B5BDCFB5CDB3BCF4CCF9B0E5000000000000000000000000000083EC0C535556578B7C24208B473C03C78138504500000F858E0000008B48788B44392003CF03C7894C2418C7442420000000008B491885C9894C2414766C8B6C2424894424248A4D008BD181E2FF00000089542410EB048B5424108B008BCD8D343833C08A062BC275248A55002BF584D274178A51014133C08BDA8A040E81E3FF0000002BC374E7EB0485C074268B4C24208B4424248B5424144183C0043BCA894C24208944242472AD5F5E5D33C05B83C40CC38B4424188B5424208B48248B401C8D0C5133D2668B14398D0C908B043903C75F5E5D5B83C40CC39090909090558BEC81EC48010000535657B906000000BE781040008D7DBCF3A566A5A4B905000000BE601040008D7DD8A158104000F3A5668B0D5C1040008A155E10400066A58945F466894DF88855FAC745FC0000000064A1180000008945FC8B45FC68481040008B48308B510C8B420C8B088B118B721856E8A7FEFFFF683C104000568BF8E89AFEFFFF6830104000568945FCE88CFEFFFF83C4188945F08D45F450FFD78BD8682410400053E873FEFFFF8B3D0010400083C4086A006A006A006A2CFFD76A006A026A006A2CFFD7681410400056E84BFEFFFF8BD0B94000000033C08DBDB9FEFFFFC685B8FEFFFF0083C408F3AB66ABAAFFD28BF883C9FF33C08D95B8FEFFFFF2AEF7D12BF98BC18BF78BFAC1E902F3A58BC833C083E103F3A48DBDB8FEFFFF83C9FFF2AEF7D1498A8C0DB7FEFFFF80F973742180F953741C680810400053E8DAFDFFFF83C4088D4DD88D55BC6A4051526A00FFD053FF55FC6A00FF55F05F5E5B8BE55DC39090909090909090901813000000000000000000002E1300000010000000000000000000000000000000000000000000002013000000000000AA026B657962645F6576656E74005553455233322E646C6C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
 
TargetFileName = "C:\tmp.exe"
 
With CreateObject("ADODB.Stream"):.Type = 1:.Open:.Write StrToByte(data):.SaveToFile TargetFileName, 2:.Close:End With
 
WScript.CreateObject("WScript.Shell").Run TargetFileName & " /s",,true
WScript.CreateObject("WScript.Shell").Run "cmd /c del " &TargetFileName,vbhid
MsgBox "当前屏幕图象已经拷贝到系统剪贴板", 64, "信息"
 
Function StrToByte(str)
    Set xmldoc = CreateObject("Microsoft.XMLDOM")
    xmldoc.loadXML "<?xml version=""1.0""?>"
    Set pic = xmldoc.createElement("pic")
    pic.dataType = "bin.hex"
    pic.nodeTypedValue = str
    StrToByte = pic.nodeTypedValue
End Function

 

本文转载自:

上一篇: VBS操作Excel
adamduan
粉丝 10
博文 84
码字总数 8447
作品 0
大连
程序员
私信 提问
VBS 脚本中的字典、动态数组、队列和堆栈

今天用VBS脚本写了几个程序,用到了字典(Dictionary)、动态数组(ArrayList)、队列(Queue)和堆栈(Stack)。现在写篇Blog总结一下 :-) 1.编写环境 今天突发奇想下载了个gVim来写VBS脚...

北风其凉
2014/12/30
0
0
VBS脚本调用WIA.Vector对象绘制位图

VBS脚本可以通过调用WIA.Vector对象画图,使用该对象的Add方法可以把vb中的颜色逐个坐标画到位图中。 下面这段代码,是打印方程X(n+1)=cot(X(n)),x(1)=1迭代20次后的图像(坐标有调整,每个小...

北风其凉
2014/10/18
0
0
基于vbs通过语音向电脑发送命令

1、程序源码 将以下配置文件另存为x.xml,vbs源码另存为文件,双击即可运行。运行前如果您的电脑没有启用麦克风,则会提示您开启麦克风,按顺序操作即可。 (1)vbs源码 (2)命令配置文件 ...

孟飞阳
2016/07/09
10
0
vbs模拟Java Robot操作键盘

在Windows环境下,使用vbs也可以实现类似Java的robot操作键盘的功能,而且无需编译。某些特殊情况下,使用vbs会是一个很好的选择。 以下程序的功能为打开系统的计算器程序,通过键盘输入1+2...

孟飞阳
2016/07/10
11
0
解析针对巴西用户的恶意软件及垃圾邮件行动

     FireEye实验室最近发现了几起针对巴西公司的大范围masepam(恶意软件垃圾邮件)行动,旨在传播银行木马。我们将这些行动称为Metamorfo。在行动的各个阶段中,我们观察到使用多种策略...

嘶吼RoarTalk
2018/04/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
6
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部