分享好友 编程语言首页 频道列表

VBS实现截图功能

vbs  2015-11-20 09:510

百度说,VBS很难截图,倒是有个利用第三方软件的方法,调用该软件,然后该软件会自动截图。

但这样,违背了用VBS的初衷。

VBS就是因为它方便快捷。要是用第三方软件的话,干脆我们直接用VB写一个好了。

那么...只好调用Excel用VBA去做了。
有什么更好的方法吗?

在度娘上翻了很久,没有什么好方法,因为实现截屏原本就不是微软设计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脚本中就可以实现更丰富的功能了

查看更多关于【vbs】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
VB用API实现各种对话框(总结) vbs简单代码对话框
VB用API实现各种对话框(总结)  各种对话框(总结)标准对话框(SmDialog)Option Explicit''定义一个全局变量,用于保存字体的各种属性Public Type SmFontAttrFontName As String '字体名FontSize As Integer '字体大小FontBod As Boolean '是否黑体FontItalic A

0评论2023-02-09401

脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下.     脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua                  工作控制语言和shell    Shell 脚本    此类脚本用于自动

0评论2023-02-09933

VB中的Dictionary对象 vbs dictionary
 VB中的Dictionary对象     Dictionary对象不是VBA或Visual Basic实时语言的具体存在的部分,它是存在于Microsoft Scripting Runtime Library(SCRRUN.DLL)中的一个对象。    为了在应用程序中使用Dictionary对象,就必须利用Reference对话框增加一个

0评论2023-02-09998

vb常用函数一览表 vbs函数大全
常用内部函数数学函数函数功能示例结果说明Abs(x)绝对值Abs(-50.3)50.3 Exp(x)自然指数Exp(2)e^2e(自然对数的底)的某次方Fix(x)取整(取参数的整数部分)Fix(-99.8)-99参数大于 0 时,去掉小数部分;参数小于 0 时,返回大于或等于该参数值Int(x)取整(取小于

0评论2023-02-08959

如何在VB.net中建立word文档 vbs创建文本文档
Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.ClickEnd Subwith:Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.ClickDim oWord As

0评论2023-02-08438

VB中的+与&符号的区别 vb和vbs
字符串运算符和字符串表达式  字符串运算符的作用是将两个字符串连接成一个字符串,经常形象的叫做连接符。  在VB中就提供了两种连接用的字符串运算符 “”、“+” 例如  “VB”+“编程入门” 就等同于“VB编程入门” “VB”“编程入门” 就等同于“V

0评论2023-02-07506

使用 Iisext.vbs 列出Web服务扩展的方法
这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上列出 Web 服务扩展,需要的朋友可以参考下

0评论2015-11-23132

使用 Iisext.vbs 启用Web服务扩展文件的方法
这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上启用 Web 服务扩展文件,需要的朋友可以参考下

0评论2015-11-23188

使用 Iisext.vbs 添加Web服务扩展文件的方法
这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上添加 Web 服务扩展文件,需要的朋友可以参考下

0评论2015-11-23173

使用 Iisext.vbs 删除 Web 服务扩展文件的方法
这篇文章主要介绍了如何使用 iisext.vbs 从本地或远程计算机上删除 Web 服务扩展文件,需要的朋友可以参考下

0评论2015-11-23112

使用 Iisext.vbs 列出 Web 服务扩展文件的方法
这篇文章主要介绍了如何使用 iisext.vbs 在本地或远程计算机上列出 Web 服务扩展文件,需要的朋友可以参考下

0评论2015-11-23149

VBS中InStrRev函数的第三个参数(Start)使用注意事项
这篇文章主要介绍了VBS中InStrRev函数的第三个参数(Start)使用注意事项,它是从开始第N个字符开始搜索的,需要的朋友可以参考下

0评论2015-11-20164

vbs脚本实现下载jre包并静默安装的代码实例
这篇文章主要介绍了vbs脚本实现下载jre包并静默安装的代码实例,通过本文可以学到VBS中下载远程文件的方法、静默安装jre包的方法,需要的朋友可以参考下

0评论2015-11-20157

Vbscript生成Excel报表的常用操作总结
这篇文章主要介绍了Vbscript生成Excel报表的常用操作总结,涵盖方方面面的Excel操作命令,不容错过,需要的朋友可以参考下

0评论2015-11-20128

MSScriptControl.ScriptControl组件的用法实例
这篇文章主要介绍了MSScriptControl.ScriptControl组件的用法实例,需要的朋友可以参考下

0评论2015-11-20150

MSScriptControl.ScriptControl组件属性、方法、事件介绍
这篇文章主要介绍了MSScriptControl.ScriptControl组件属性、方法、事件介绍,需要的朋友可以参考下

0评论2015-11-2087

VBScript把json字符串解析成json对象的2个方法
这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下

0评论2015-11-2085

使用vbscript生成36进制自动增长序号的实现代码
这篇文章主要介绍了使用vbscript生成36进制自动增长序号的实现代码,本文代码也可以在ASP中使用,需要的朋友可以参考下

0评论2015-11-20151

更多推荐