お世話になります。
ここは VBScript についての質問も OK でしょうか?
以下のコードで既に起動中の任意URLのIE Windowを取得し、
他のページへ飛ばす(Navigate)ところまではできました。
その後、イベント(DocumentComplete)を拾いたいのですが、
どのようにすればよいでしょうか?
Dim objWin, objTarget, objFileSys, objWS, sURL1, sURL2
sURL1 = "http://www.yahoo.co.jp/"
sURL2 = "http://www.google.co.jp/"
Set objTarget = Nothing
Set objFileSys = CreateObject("Scripting.FileSystemObject")
For Each objWin In CreateObject("Shell.Application").Windows
If LCase(objFileSys.GetFileName(objWin.FullName)) = "iexplore.exe" Then
If objWin.LocationURL = sURL1 Then
Set objTarget = objWin
Exit For
End If
End If
Next
If Not objTarget Is Nothing Then
objTarget.Navigate sURL2
Do
WScript.Sleep 100
Loop
WScript.Sleep 100
End If
Sub IE_DocumentComplete(pDisp, URL)
MsgBox "Googleに変わりました。"
WScript.Quit()
End Sub
既存のIE Windowではなく、新しいIEを開くなら、
CreateObject("Internet.Explorer","IE_")
でイベントの接頭語を指定することでいけます。
しかし、上記コードの
CreateObject("Shell.Application")
を
CreateObject("Shell.Application", "IE_")
にしてもエラー、
Set objTarget = objWin
の次行に
WScript.ConnectObject objTarget, "IE_"
を追加してもエラー、
VBSCRIPTなので、WithEvents も使えない。
で行き詰まってしまいました。
なにか方法はありますでしょうか?
自己訂正レス失礼
> CreateObject("Internet.Explorer","IE_")
CreateObject("InternetExplorer.Application","IE_")
でしたネ
また自己レス
Do Loopがおかしかったです。
Do While objTarget.Busy or objTarget.ReadyState<>4
WScript.Sleep 100
Loop
WScript.Sleep 100
でした。
これくらいなら、別にイベント取得しなくても、
この後にMsgBoxでいいのですが、
実際には、イベント内でいろいろと処理したり、
他のイベントも処理させるつもりです。