アクティブウィンドウのキャプションタイトルを取得 |
アクティブウィンドウのキャプションタイトルを取得する (128) | |
Option Explicit 'SampleNo=128 WindowsXP VB6.0(SP5) 2002.04.07 'ウィンドウのキャプションタイトルを取得する(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& 'ウィンドウの現在位置を保持する '=============================================================== 'システムを立ち上げてからの経過時間を高精度に取得する(P1002) Private Declare Function timeGetTime Lib "winmm.dll" () As Long 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 = "" StopTime 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 Private Sub StopTime(st As Long) '指定の時間待つ(1/1000 秒単位で指定) Dim lngSt As Long lngSt = timeGetTime Do While timeGetTime - lngSt < st DoEvents Loop End Sub 実行結果 |
|
直接入力すると、大文字・小文字・半角・全角が区別されるのでけっこう大変です。 これですと、タイトルを取得したいウィンドウをアクティブにすれば自動で取得でき便利です。 |
2002/04/20