指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを取得(FindWindow)
user32.dll の FindWindow を用いて、指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを取得します。
※サンプルを動作した環境の Microsoft Office のバージョンは 2003 です。
サンプルのダウンロード
■サンプルの説明

起動すると、こんな画面が表示されます。Button1 をクリックすると、メモ帳・Microsoft Excel・Microsoft Access が起動していないかどうかをイミディエイトウィンドウに出力します。
■コード
F0012_FindWindow.vb
Imports System.Runtime.InteropServices ''' <summary> ''' FindWindow(user32.dll) ''' </summary> Partial Public Class F0012_FindWindow ''' <summary> ''' 指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを取得 ''' </summary> <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ Private Shared Function FindWindow(ByVal lpClassName As String, _ ByVal lpWindowName As String) _ As IntPtr End Function ''' <summary> ''' 指定された文字列と一致するクラス名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを取得 ''' </summary> <DllImport("user32.dll", EntryPoint:="FindWindow", CharSet:=CharSet.Auto)> _ Private Shared Function FindWindowByClass(ByVal lpClassName As String, _ ByVal zero As IntPtr) _ As IntPtr End Function ''' <summary> ''' 指定された文字列と一致するウィンドウ名を持つトップレベルウィンドウ( 親を持たないウィンドウ)のハンドルを取得 ''' </summary> <DllImport("user32.dll", EntryPoint:="FindWindow", CharSet:=CharSet.Auto)> _ Private Shared Function FindWindowByCaption(ByVal zero As IntPtr, _ ByVal lpWindowName As String) _ As IntPtr End Function ''' <summary> ''' Button1 ボタンクリック時のイベント ''' </summary> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim notepadHandle As IntPtr = FindWindow("Notepad", "無題 - メモ帳") If notepadHandle = IntPtr.Zero Then System.Diagnostics.Debug.WriteLine("メモ帳は起動してません") End If Dim excelHandle As IntPtr = FindWindowByClass("XLMAIN", IntPtr.Zero) ' System.Diagnostics.Process.GetProcessesByName も参考に If excelHandle = IntPtr.Zero Then System.Diagnostics.Debug.WriteLine("Microsoft Excel は起動してません") End If Dim accessHandle As IntPtr = FindWindowByCaption(IntPtr.Zero, "Microsoft Access") If accessHandle = IntPtr.Zero Then System.Diagnostics.Debug.WriteLine("Microsoft Access は起動してません") End If End Sub End Class