7.アクティブウィンドウのキャプションタイトルを取得する |
1.アクティブウィンドウのキャプションタイトルを取得する 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:MyWaitDll 使用 API:GetWindowText GetForegroundWindow SetWindowPos その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.アクティブウィンドウのキャプションタイトルを取得する(SampleNo=128) 2002.04.07 |
Option Explicit 'ウィンドウのキャプションタイトルを取得する(P92) Private Declare Function GetWindowText Lib "user32" _ Alias "GetWindowTextA" (ByVal hwnd As Long, _ ByVal lpString As String, ByVal cch As Long) As Long 'フォアグランドウィンドウのハンドルを取得する(P86) Private Declare Function GetForegroundWindow Lib "user32" () As Long '=============================================================== '指定のウィンドウのサイズ、位置、Zオーダーを設定する(P100) Private Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, _ ByVal cy As Long, ByVal wFlags As Long) As Long Private Const HWND_TOPMOST = (-1) 'ウィンドウリストの一番上に配置する Private Const HWND_BOTTOM = (1) 'ウィンドウ表示リストの最後に置く Private Const SWP_NOSIZE = &H1& 'ウィンドウの現在のサイズを保持する Private Const SWP_NOMOVE = &H2& 'ウィンドウの現在位置を保持する '=============================================================== Private Sub Command1_Click() Dim AWhwnd As Long Dim lpString As String * 255 Dim lngResult As Long 'このウィンドウをウィンドウ表示リストの最後に置く lngResult = SetWindowPos(Me.hwnd, HWND_BOTTOM _ , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) Text1.Text = "" Wait 3000 '3秒後に実施 指定時間待つ、待機関数 を参照 AWhwnd = GetForegroundWindow 'ハンドルを取得 'アクティブウィンドウのタイトルを取得 lngResult = GetWindowText(AWhwnd, lpString, 255) '取得したタイトルを表示 Text1.Text = Left$(lpString, InStr(lpString, vbNullChar) - 1) 'このウィンドウを一番上に配置する(必須ではありませんが、ないと不便なので) lngResult = SetWindowPos(Me.hwnd, HWND_TOPMOST _ , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) End Sub 実行結果及び使用コントールと配置図 |
直接入力すると、大文字・小文字・半角・全角が区別されるのでけっこう大変です。 これですと、タイトルを取得したいウィンドウをアクティブにすれば自動で取得でき便利です。 他のEXEのハンドルを取得しVBから終了するのサンプルと合わせて使用すると使い勝手が良くなるかと。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
指定されたウィンドウのタイトルバーのテキストをバッファーへコピーします 指定されたウィンドウがコントロールの場合は、コントロールのテキストをコピーします ウィンドウのタイトルバーの文字列を取得する 指定されたウィンドウハンドルの名前を取得する 現在アクティブなウィンドウのタイトルを取得する |