int GetWindowText(HWND hWnd, LPTSTR sWndTitle, int cLen);
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _ ByVal hWnd As Long, _ ByVal sWndTitle As String, _ ByVal cLen As Long) As Long
hWndが示すウィンドウがコントロールの場合、以下のような文字列が返される。
エディットコントロール | エディットコントロールの内容 |
ボタン | ボタン名 |
コンボボックス | コンボボックスのエディットコントロール部分の内容 |
引数の意味は、以下の通り。
hWnd | (IN) | ウィンドウテキストの取得元ウィンドウを表すウィンドウハンドル。 |
WndTitle | (OUT) | ウィンドウテキストを格納するバッファ。 |
cLen | (IN) | ウィンドウテキストを格納するバッファのサイズ。 |
戻り値は、取得結果の文字数である。取得に失敗すると、0が戻される。
主なエラーは、以下の通り。
XXXXX | ウィンドウハンドルが誤っている |
XXXXX | hWndが指すウィンドウはウィンドウテキストを持たない |
XXXXX | バッファへのポインタが不正 |
XXXXX | バッファのサイズが足りない |
/* フォアグラウンドウィンドウのタイトルを表示する */ void DoGetForegroundWindow() { char buf[1000]; HWND hWnd; /* フォアグラウンドウィンドウの取得 */ hWnd = GetForegroundWindow(); /* ウィンドウタイトルの表示 */ GetWindowText(hWnd, buf, 1000); MessageBox(NULL, buf, "DoGetForegroundWindow", MB_OK); }
'フォアグラウンドウィンドウのタイトルをデバッグウィンドウに表示する Sub Main() Dim hForegroundWnd As Long Dim WndTitle As String * 1000 Dim Cnt As Integer 'フォアグラウンドウィンドウのタイトルを1000回表示 Do '1000回表示したら終了 Cnt = Cnt + 1 If Cnt = 1000 Then Exit Do 'フォアグラウンドウィンドウの取得 hForegroundWnd = GetForegroundWindow() 'ウィンドウタイトルの取得 WndTitle = "" GetWindowText hForegroundWnd, WndTitle, 1000 'ウィンドウタイトルの表示 Debug.Print WndTitle DoEvents Loop End Sub