我是 vbscript 的新手。我想保存使用 vbscript 打开的 Internet Explorer 窗口的 vbscript 拍摄的快照。
加载页面的代码
Dim IE, stateString
Set IE = WScript.CreateObject("InternetExplorer.Application")
ie.toolbar = 1
ie.statusbar = 1
ie.width = 999
ie.height = 500
ie.left = 20
ie.theatermode = false
ie.theatermode = true
ie.theatermode = false
ie.top = 50
ie.navigate("file:///C:\Users\Vinit_Tiwari\Documents\vbscripts\someform.html")
'stateString = cstr(ie.readystate)
waitforload(ie)
ie.visible = 1
Set wshShell = CreateObject("Wscript.Shell")
wshShell.AppActivate "Some Form"
wshShell.SendKeys "% x"
截图代码
Dim oWordBasic
set oWordBasic = CreateObject("Word.Basic")
oWordBasic.sendkeys "{prtsc}"
oWordBasic.AppClose "Microsoft Word"
Set oWordBasic = Nothing
Wscript.Sleep 2000
保存快照
dim paint
set paint = wshShell.exec("mspaint")
do while paint.status = 0:loop
wshShell.appactivate("untitled-Paint")'this returns false
Wscript.sleep 500
WshShell.SendKeys "^v"
wscript.sleep 500
wshshell.sendkeys "^s"
wscript.sleep 500
wshshell.sendkeys "d:\test.png"
wscript.sleep 500
wshell.sendkeys "{Enter}"
Set wshshell = Nothing
实际上,先前打开的 ie 窗口具有焦点并且击键被发送到 ie 而不是 paint。那么是否有任何函数执行与 AppActivate
相反的工作。
最佳答案
这行不通。按下打印屏幕按钮时,Microsoft Word 处于焦点状态。您可以通过完全不使用 Microsoft Word 轻松消除此问题。这不是必需的。 Print Screen 功能是系统热键,与 Microsoft Word 无关。您应该使用 Alt+PrintScreen 组合,它将当前聚焦窗口的屏幕截图捕获到剪贴板。
其次,如果焦点不是画图而不是 IE,那是因为您的窗口标题有误。你正在正确地做那部分。如果 AppActivate 找不到具有指定标题的窗口,则返回 false。老实说,Paint 一开始就应该有焦点,但最好先确保窗口被激活。
另外,这是一个很老的系统吗?出于好奇,您为什么要使用 Word.Basic 自动化对象?
关于vbscript - 使用 vbscript 保存快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073224/