VBScriptで、既に開いているIEを画面の最前面に表示させる
OS:WindowsXP SP3
ブラウザ:InternetExplorer6
期待している機能としましては、IEが開いていない場合は新規にIEを立ち上げ、既に開いている場合は、それを画面の最前面に表示させる(最小化されている場合はそれを解除する)といった感じです。
教えて頂きたいのは、IEを画面の最前面に表示させる方法(最小化の場合はそれを解除)です。
現状のソースを記載します。おかしな点がありましたらご指摘よろしくお願い致します。
Dim objShell
Dim objWindow
Dim objIE
Dim ieFlag
ieFlag = False
'開いているウィンドウからIEを検索
Set objShell = CreateObject("Shell.Application")
For Each objWindow In objShell.Windows
If TypeName(objWindow.Document) = "HTMLDocument" Then
ieFlag = True
Set objIE = objWindow
Exit For
End If
Next
'IEが開いていたらそれを画面の最前面に、そうでないなら新規で開く
If ieFlag = True Then
'IEを画面の最前面に又は、最小化解除
Else
'新規にIEを開く
Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("http://www.google.co.jp/")
WScript.Sleep(4000)
End If
早速の回答ありがとうございます。
AppActivateがある事は知っていたのですが、SendKeysですか!盲点でした><
早速作ってみました。ほぼ希望通りの動作を確認できました。^^
ieFlag = False
'開いているウィンドウからIEを検索
Set objShell = CreateObject("Shell.Application")
For Each objWindow In objShell.Windows
If TypeName(objWindow.Document) = "HTMLDocument" Then
ieFlag = True
Set objIE = objWindow
Exit For
End If
Next
'IEが開いていたら画面の最前面に、そうでないなら新規で開く
If ieFlag = True Then
'IEを画面の最前面に又は、最小化解除
Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.AppActivate "ページタイトル"
WshShell.SendKeys "%( )"
WshShell.SendKeys "R"
Else
'新規にIEを開く
Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("http://www.google.co.jp/")
WScript.Sleep(4000)
End If
お礼
早速の回答ありがとうございます。 AppActivateがある事は知っていたのですが、SendKeysですか!盲点でした>< 早速作ってみました。ほぼ希望通りの動作を確認できました。^^ ieFlag = False '開いているウィンドウからIEを検索 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then ieFlag = True Set objIE = objWindow Exit For End If Next 'IEが開いていたら画面の最前面に、そうでないなら新規で開く If ieFlag = True Then 'IEを画面の最前面に又は、最小化解除 Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.AppActivate "ページタイトル" WshShell.SendKeys "%( )" WshShell.SendKeys "R" Else '新規にIEを開く Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.Run("http://www.google.co.jp/") WScript.Sleep(4000) End If