2012年8月5日日曜日

[ExcelVBA] FindWindowEx


■説明
親ハンドル、クラス名、ウィンドウ名から子ハンドルを探す関数

■宣言
Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, ByVal lpszWindow As String) As Long

第一引数:親ハンドルを指定します
第ニ引数:同名のクラス、タイトルのハンドルを取得する場合、
     0を指定すると、Zオーダーで最初に該当するハンドルしか見つけません。
     他の同名のハンドルを取得したい時、Zオーダーを指定することで
     他の同名のハンドルも見つけることができます。
第三引数:取得したい子ハンドルのクラス名を指定します。
第四引数:ウィンドウのタイトルを指定します。
戻り値:関数が成功するとハンドルが返ってきます。失敗すると0が返ってきます

クラス名の調べ方については下記を参考にしてみてください。
Class名の調べ方

■サンプルコード
電卓のハンドルを取得する方法です。
電卓のクラス名はSciCalcです。
  1. Option Explicit  
  2.   
  3. Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _  
  4.     (ByVal lpClassName As StringByVal lpWindowName As StringAs Long  
  5. Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _  
  6.     (ByVal hwndParent As LongByVal hwndChildAfter As Long, _  
  7.      ByVal lpszClass As StringByVal lpszWindow As StringAs Long  
  8.        
  9. Sub SampleCode()  
  10.     Dim hwnd As Long  
  11.     hwnd = FindWindow("SciCalc""電卓")  
  12.       
  13.     Dim HwndDisplay As Long  
  14.     HwndDisplay = FindWindowEx(hwnd, 0, "EDIT""")  
  15. End Sub  


0 件のコメント: