●概要●
宣言文 Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String)
As Long
設定項目 内容
pClassName ウィンドウが属するウィンドウクラス名を指定[省略不可]
lpWindowName ウィンドウのタイトルバーの文字列を指定[省略不可]
ウィンドウ操作を行う場合には、ウィンドウハンドルを利用します。
引数で指定したウィンドウクラス名と、引数で指定したタイトルバーの文字列からウィンドウハンドルを取得します。一方もしくは両方を指定しない場合には、組み込み定数「vbNullString」(値0の文字列)を指定します。
ウィンドウには重なり順(Zオーダー)があり、最前面のウィンドウから順に検索します。戻り値はウィンドウハンドルで、失敗時には、「0」を返します。
次のコードは、メモ帳のウィンドウハンドルを取得して、メッセージダイアログで表示するサンプルです。
●サンプル●
Private Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String _
, ByVal lpWindowName As String) As Long
'クラス名からウィンドウハンドルを取得する
Sub Sample()
Dim myHwnd As Long
'メモ帳のウィンドウハンドルの取得
myHwnd = FindWindow("Notepad", vbNullString)
MsgBox myHwnd
End Sub
●補足1●
サンプルは、メモ帳を起動してから実行してください(メモ帳が起動していない場合は、メッセージダイアログに「0」が表示されます)。
●補足2●
ウィンドウクラス名の主なものを挙げると次のようになります。
アプリケーション ウィンドウクラス名
Access OMain
Excel XLMAIN
Word OpusApp
PowerPoint PP10FrameClass
Internet Explorer IEFrame
Visual Basic Editor wndclass_desked_gsk
エクスプローラ ExploreWClass
メモ帳 Notepad
ワードパッド WordPadClass
電卓 SciCalc
ペイント MSPaintApp
●補足3●
Accessアプリケーションのウィンドウハンドルは、ApplicationオブジェクトのhWndAccessAppメソッドで取得できます。