即効テクニック |
●概要● 宣言文 Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 設定項目 内容 hwnd 基準となるウィンドウハンドルを指定[省略不可] wCmd 検索方法を示すフラグとなる定数を指定[省略不可] 引数で指定したウィンドウハンドルを持つウィンドウを基準にして、引数 で指定した方法でウィンドウを検索し、ウィンドウハンドルを返します。失敗時には「0」を返します。 引数 には次の定数を指定します。 ・検索方法を示すフラグ に指定する定数 定数 値 検索方法 GW_HWNDFIRST 0 最前面のウィンドウを検索する GW_HWNDLAST 1 最背面のウィンドウを検索する GW_HWNDNEXT 2 基準となるウィンドウの次のウィンドウを検索する GW_HWNDPREV 3 基準となるウィンドウの前のウィンドウを検索する GW_OWNER 4 基準となるウィンドウのオーナーウィンドウを検索する GW_CHILD 5 基準となるウィンドウの子ウィンドウのうちトップレベル のウィンドウを検索する 次のコードは、Accessアプリケーションのウィンドウの次のウィンドウのウィンドウハンドルをメッセージダイアログで表示するサンプルです。 ●サンプル● Private Declare Function GetWindow _ Lib "user32" _ (ByVal hwnd As Long, ByVal wCmd As Long) _ As Long Private Const GW_HWNDNEXT As Long = 2 Sub Sample() Dim myHwnd As Long 'Accessアプリケーションのウィンドウハンドルの取得 myHwnd = Application.hWndAccessApp '次のウィンドウのウィンドウハンドルを取得して表示 myHwnd = GetWindow(myHwnd, GW_HWNDNEXT) MsgBox myHwnd End Sub ●補足1● APIビューアを使った場合、FindNextWindow関数の宣言が Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long となっていることがわかります。GetNextWindow関数を使っても、実際に動作しているのはGetWindow関数なのです。 ●補足2● 検索の基準となるウィンドウが子ウィンドウの場合には、検索対象は子ウィンドウとなります。 また、最前面のウィンドウをウィンドウハンドルを取得する場合には、FindWindow関数を使って、 変数 = FindWindow(vbNullString, vbNullString) として取得することもできます。