前提・実現したいこと
IEをVBScriptで最前面に表示したいです。
試したこと
まず調べてみると以下のようにすればIEが最前面に表示されることがわかりました。
Const strIEexe = "iexplore.exe" 'IEのプロセス名 Dim intProcID 'IEのウィンドウをアクティブ化する call ActiveIE sub ActiveIE() Dim objWshShell GetProcID(strIEexe) If intProcID = 0 Then WScript.Quit(0) Exit Sub End If Set objWshShell = CreateObject("Wscript.Shell") objWshShell.AppActivate intProcID Set objWshShell = Nothing End Sub Function GetProcID(ProcessName) Dim Service Dim QfeSet Dim Qfe Set Service = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='"& ProcessName &"'") intProcID = 0 For Each Qfe in QfeSet intProcID = Qfe.ProcessId Exit For Next GetProcID = intProcID <> 0 End Function
発生している問題・エラーメッセージ
しかし、このままではIEを最小化していた場合に最前面に出力されないことが分かったのでさらに調べてみると
objWshShell.SendKeys"%" objWshShell.SendKeys"R"
を追加すればショートカットを入力したことになり、最小化が解除されるということなので以下のソースを作成しました。
該当のソースコード
Const strIEexe = "iexplore.exe" 'IEのプロセス名 Dim intProcID 'IEのウィンドウをアクティブ化する call ActiveIE sub ActiveIE() Dim objWshShell GetProcID(strIEexe) If intProcID = 0 Then WScript.Quit(0) Exit Sub End If Set objWshShell = CreateObject("Wscript.Shell") objWshShell.AppActivate intProcID '---追加--- WScript.Sleep(500) objWshShell.SendKeys"%" objWshShell.SendKeys"R" '---ここまで--- Set objWshShell = Nothing End Sub Function GetProcID(ProcessName) Dim Service Dim QfeSet Dim Qfe Set Service = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='"& ProcessName &"'") intProcID = 0 For Each Qfe in QfeSet intProcID = Qfe.ProcessId Exit For Next GetProcID = intProcID <> 0 End Function
でもこれだと最小化は解除されませんでした。
どうすると最小化してあるIEが最前面表示されますか?
補足情報(FW/ツールのバージョンなど)
VBScript
回答2件
あなたの回答
tips
プレビュー