API宣言
WindowsAPI(関数)を使うためには、事前に宣言が必要となります。
Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hWnd As LongPtr, _
ByVal lpString As String, _
ByVal cch As Long _
) As Long
ByVal hWnd As LongPtr, _
ByVal lpString As String, _
ByVal cch As Long _
) As Long
解説
この宣言では、GetWindowText関数(アプリケーションのウィンドウ名を取得)が使用できる様になります。
プログラミング例
具体的なプログラミング例を紹介します。
Sub ウィンドウのタイトルを取得する()
Dim クラス名 As String
Dim ウィンドウ名 As String
Dim ウィンドウハンドル As Long
Dim ウィンドウタイトル As String
Dim タイトルの長さ As Long
' クラス名を指定してウィンドウハンドルを取得(例としてExcelを使用)
クラス名 = "XLMAIN" ' 今回はクラス名をExcelにする
ウィンドウ名 = vbNullString ' ウィンドウ名は空にする
' FindWindow関数を呼び出して、ウィンドウハンドルを取得
ウィンドウハンドル = FindWindow(クラス名, ウィンドウ名)
' タイトルを格納するための空の文字列を用意
ウィンドウタイトル = String(256, vbNullChar)
' GetWindowText関数を呼び出してタイトルを取得
タイトルの長さ = GetWindowText(ウィンドウハンドル, ウィンドウタイトル, Len(ウィンドウタイトル))
' 取得したタイトルをメッセージボックスに表示
MsgBox "ウィンドウのタイトルは: " & Left(ウィンドウタイトル, タイトルの長さ)
End Sub
Dim クラス名 As String
Dim ウィンドウ名 As String
Dim ウィンドウハンドル As Long
Dim ウィンドウタイトル As String
Dim タイトルの長さ As Long
' クラス名を指定してウィンドウハンドルを取得(例としてExcelを使用)
クラス名 = "XLMAIN" ' 今回はクラス名をExcelにする
ウィンドウ名 = vbNullString ' ウィンドウ名は空にする
' FindWindow関数を呼び出して、ウィンドウハンドルを取得
ウィンドウハンドル = FindWindow(クラス名, ウィンドウ名)
' タイトルを格納するための空の文字列を用意
ウィンドウタイトル = String(256, vbNullChar)
' GetWindowText関数を呼び出してタイトルを取得
タイトルの長さ = GetWindowText(ウィンドウハンドル, ウィンドウタイトル, Len(ウィンドウタイトル))
' 取得したタイトルをメッセージボックスに表示
MsgBox "ウィンドウのタイトルは: " & Left(ウィンドウタイトル, タイトルの長さ)
End Sub
上記のプログラムは、Excelのウィンドウハンドルを取得し、取得したハンドルを元にウィンドウ名を表示する内容です。ウィンドウハンドルの取得方法については、こちらのサイトも参考にして下さい。
まとめ
WindowsAPI関数:GetWindowTextを使用し、アプリケーションのウィンドウ名を取得する方法について紹介しました。