本サイトはプロモーションを含みます。

VBSでIEをアクティブ化(最前面表示)する

このページはこんな方におすすめです
  • VBSで特定のウィンドウをアクティブ化する方法が知りたい

リストからURLを読み込みIEでアクセスしたらスクリーンショットを撮る、というスクリプトを作成していた時にハマったVBSでIE(Internet Explorer)の画面をアクティブ化(最前面表示)させる方法について解説します。

VBSでIE(Chrome,Firefox,Edge)をアクティブ化(最前面表示)する方法

VBSでIE(Chrome,Firefox,Edge)をアクティブ化(最前面表示)する流れ

ブラウザのプロセスIDを取得する
ブラウザのウィンドウを操作するためのObjectを作成する
ブラウザのウィンドウをアクティブ化(最前面表示)する

プロセスIDを取得する

プログラムが起動するとプロセスIDが割り当てられます。このプロセスIDを使って起動済みのプログラムを再起動させたり終了させる事ができます。

VBSでプロセスIDを取得するための関数は次のように書く事ができます。この関数に引数でプロセス名(chrome.exeだとかfirefox.exe)を渡すとプロセスIDが返ってきます。

Function GetProcID(ProcessName)
    Dim Service
    Dim QfeSet
    Dim Qfe
    Dim intProcID
    
    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
End Function

プロセス名が分からない場合はタスクマネージャーで調べる事ができます。

プロセスIDを利用してIEをアクティブ化(最前面表示)する

先ほどの方法でブラウザのプロセスIDは取得できるので、あとはアクティブ化するだけです。

CreateObject(“Wscript.Shell”)でオブジェクトを作成して、AppActivate メソッドにプロセスIDを指定するだけでウィンドウがアクティブ化します。

Set objWshShell = CreateObject("Wscript.Shell")
objWshShell.AppActivate <プロセスID>

VBSでIEをアクティブ化(最前面表示)するだけのコード

それでは、ただ単にブラウザをアクティブ化するVBSコードです。次のVBSを適当なファイル名(拡張子は.vbs)で保存してください。ファイルをダブルクリックすると、起動済みのブラウザをアクティブ化します。

ブラウザはもはやIEは古いので普及率が高いGoogle Chromeにしました。6行目の箇所がそれです。Firfoxであれば”firefox.exe”、Edgeであれば”MicrosoftEdgeCP.exe”に変えてください。

Option Explicit

Dim objWshShell
Dim intProcID

intProcID = GetProcID("chrome.exe")
Set objWshShell = CreateObject("Wscript.Shell")
objWshShell.AppActivate intProcID
Set objWshShell = Nothing

Function GetProcID(ProcessName)
    Dim Service
    Dim QfeSet
    Dim Qfe
    Dim intProcID
    
    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
End Function

まとめ

単純にウィンドウをアクティブ化するだけのコードですが、色々なところで役に立つのではないかと思います。

注意点として、複数のウィンドウを立ち上げている場合は一番最後に起動したもののみアクティブ化します。

すべてのウィンドウをアクティブ化したい場合は、それぞれのプロセスIDを取得して順次アクティブ化する処理をおこなう必要があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)