許せない心理テスト

VBSでIEを起動しURLが開いた後に処理をするにはどうすればいいですか?
たとえば、

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\Internet Explorer\IEXPLORE.EXE"""&" www.google.co.jp/"
'グーグルが開いた後に処理
WshShell.SendKeys "検索ワード~"

これで開いたタイトルは「Google - Microsoft Internet Explorer」になります。

今まではSleep関数を使っていましたが、
IEの起動時間はバラバラなので早すぎたり遅すぎたりしてしまいます。
よろしくお願いします。

A 回答 (3件)

とりあえず、今回の件だけを考えれば



Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.AppActivate("Google")
WshShell.SendKeys "^v"

として、Googleを開いたWindowにアクティベートすればよいです。
    • good
    • 0

さすがにIEXPLORE.EXEをrunするのはありえないでしょ・・・。


オブジェクトとして利用してください。
またSendkeysはキーしかおくれず検索ワードを代入するのには
なにかと物足りないので、クリップボード経由で代入する手もあります。
まぁgoogleってわかっているなら、テキストボックスにvalueを
代入してやるんでもよいのですけどね。

set oIE=Wscript.CreateObject("InternetExplorer.application")
oIE.navigate2("http://www.google.co.jp")
oIE.visible=true

Do Until oIE.Busy = False
WScript.sleep(250)
Loop

Set oClip=oIE.Document.parentWindow.clipboardData
oClip.setData "text","ほげー"

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.SendKeys "^v"

この回答への補足

ご回答有り難うございます。
無事にURLの開いた後の処理になりました。
ただ、既に別のIEを起動中にこのスクリプトを実行すると、
今起動したIEがバックグラウンドになってしまい、
キーが遅れませんでした。
これを回避するのはどのような方法がありますか?

補足日時:2007/07/24 22:02
    • good
    • 0

IEのオブジェクトを生成して、イベント(NavigateComplete2)の発生を待って見るとか・・・



例えば
--------------------------------------------------------------
Dim F
F=False

Set IE = WScript.CreateObject("InternetExplorer.Application","IEW_")
IE.Visible = True
IE.Navigate "www.google.co.jp"

' -- イベント待ち --
Do While F=False
WScript.Sleep 100
Loop

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "abcd"

'-- イベントプロシージャ
Sub IEW_NavigateComplete2(O,URL)
F=True
End Sub
--------------------------------------------------------------

この回答への補足

ご回答有り難うございます。
無事にURLの開いた後の処理になりました。
ただ、既に別のIEを起動中にこのスクリプトを実行すると、
今起動したIEがバックグラウンドになってしまい、
キーが遅れませんでした。
これを回避するのはどのような方法がありますか?

補足日時:2007/07/24 22:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報