#175 キャプションからウィンドウハンドルを取得する方法 VBA、API

「#174  ウィンドウハンドルからキャプションを取得する方法」とはまったく逆に、あらかじめウィンドウのキャプションだけが分かっている場合に、そのウィンドウのハンドルを取得する方法です。ウィンドウハンドルを取得すれば、その後、さまざまなWindowsAPIを使って、そのウィンドウに対する操作が可能となります。

キャプションからウィンドウハンドルを取得するにはWindowsAPIの「FindWindow」関数を使用します。

まず標準モジュールに次のコードを記述します。"Declare"の前に"Private"を付けることによってフォームのモジュールにも記述できます。

Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


メモ帳のウィンドウ次の例は、アクセサリのメモ帳を開いた直後のウィンドウのキャプションから、そのウィンドウハンドルを取得するものです。
Dim strWindowText As String
Dim lngHWnd As Long
  
'取得するウィンドウのキャプションを設定します
strWindowText = "無題 - メモ帳"

'API関数を呼び出します
'API関数の返り値として変数lngHWndにメモ帳のハンドルがセットされます
lngHWnd = FindWindow(vbNullString, strWindowText)
If lngHWnd <> 0 Then
  MsgBox "ウィンドウハンドルは、" & lngHWnd
Else
  MsgBox "メモ帳が開いていないかキャプションが違います!"
End If

実行結果:
実行結果

※Windowsのバージョンによっては、"無題 - メモ帳"の部分が半角カタカナになっている場合もありますので、注意してください。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved