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ボタンが押されている間、MicrosoftWordにフォーカスがあります。Microsoft Wordをまったく使用しないことで、この問題を簡単に解消できます。それは必要はありません。Print Screen機能はシステムのホットキーであり、MicrosoftWordとは何の関係もありません。現在フォーカスされているウィンドウのスクリーンショットをクリップボードにキャプチャするAlt+PrintScreenの組み合わせを使用する必要があります。

次に、IEではなくペイントにフォーカスがない場合は、ウィンドウのタイトルが間違っていることが原因です。あなたはその部分を正しくやっています。AppActivateは、指定されたタイトルのウィンドウが見つからない場合、falseを返します。正直なところ、Paintは最初から焦点を合わせているはずですが、最初にウィンドウがアクティブになっていることを確認することをお勧めします。

また、これは非常に古いシステムですか?とにかく好奇心からWord.Basic自動化オブジェクトを使用しているのはなぜですか?

于 2012-04-09T18:42:20.153 に答える