VBS實現(xiàn)截圖功能
百度說,VBS很難截圖,倒是有個利用第三方軟件的方法,調(diào)用該軟件,然后該軟件會自動截圖。
但這樣,違背了用VBS的初衷。
用VBS就是因為它方便快捷。要是用第三方軟件的話,干脆我們直接用VB寫一個好了。
那么...只好調(diào)用Excel用VBA去做了。
有什么更好的方法嗎?
在度娘上翻了很久,沒有什么好方法,因為實現(xiàn)截屏原本就不是微軟設(shè)計vbs的初衷,更多的擴展功能是使用者的意愿,所以才會有第三方的出現(xiàn),實際vbs調(diào)用vba也是這種方式,利用的是vba能調(diào)用API的特性,查了下網(wǎng)上的代碼,調(diào)用的是USER32模塊中的keybd_event函數(shù)實現(xiàn)的截屏
最終一位大神給出了以下代碼:
'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 "當(dāng)前屏幕圖象已經(jīng)拷貝到系統(tǒng)剪貼板", 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腳本中就可以實現(xiàn)更豐富的功能了
上一篇:vbs判斷磁盤類型和檢測硬盤剩余空間的實現(xiàn)代碼
欄 目:vb
下一篇:Microsoft VBScript 編譯器錯誤 錯誤 '800a03e9' 內(nèi)存不夠的解決方法
本文標(biāo)題:VBS實現(xiàn)截圖功能
本文地址:http://mengdiqiu.com.cn/a1/vb/7157.html
您可能感興趣的文章
- 01-10下載文件到本地運行的vbs
- 01-10VBS中的正則表達式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語法速查及實例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁面中添加VBscript代碼


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個高效的軟件
- 01-10VBS中的正則表達式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實例說明
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改