3

我是 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 而不是绘图。那么是否有任何功能可以执行相反的工作AppActivate

4

1 回答 1

2

这行不通。按下 Print Screen 按钮时,Microsoft Word 处于焦点位置。您可以通过完全不使用 Microsoft Word 轻松消除此问题。这不是必需的。Print Screen 功能是系统热键,与 Microsoft Word 无关。您应该使用 Alt+PrintScreen 组合将当前聚焦窗口的屏幕截图捕获到剪贴板。

其次,如果Paint而不是IE而不是焦点,那是因为你的窗口标题错误。你正在正确地做那部分。如果 AppActivate 找不到具有指定标题的窗口,则返回 false。老实说,Paint 应该已经有了焦点,但最好确保首先激活窗口。

另外,这是一个非常古老的系统吗?出于好奇,您为什么还要使用 Word.Basic 自动化对象?

于 2012-04-09T18:42:20.153 回答