アクティブウィンドウのキャプションタイトルを取得
                                                           玄関へお回り下さい。   
アクティブウィンドウのキャプションタイトルを取得する         (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