#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved