子ウインドウ(コントロール)のウインドウ・ハンドルを取得するには FindWindowEx 関数で検索します。
検索には次の組み合わせで探します。(戻る)
- ウインドウのキャプションで検索
- ウインドウのクラス文字列で検索
- ウインドウのキャプションとクラスで検索
文字列は大文字と小文字を区別しないで検索されます。
プロトタイプ宣言
HWND FindWindowEx( HWND hParent, // 親ウインドウのハンドル HWND hChild, // 子ウインドウのハンドル LPCTSTR lpClass, // クラス名 LPCTSTR lpWindow // ウインドウ名 );
サンプル
#include <stdio.h> #include <windows.h> // メイン関数(使い方) int main( void ) { TCHAR szBuff[ 1024 ]; HWND hParent; HWND hChild; // 電卓 if ( (hParent = FindWindow(TEXT("SciCalc"),NULL)) == NULL ){ printf( TEXT("電卓は1つも起動されていません。\n") ); return 255; } // 親ウインドウの表示 printf( TEXT("電卓のウインドウ・ハンドルは 0x%p です。\n"), hParent ); printf( TEXT("\n") ); hChild = NULL; // 子ウインドウの検索 while ( (hChild = FindWindowEx(hParent,hChild,TEXT("Button"),NULL)) != NULL ){ GetWindowText( hChild, szBuff, sizeof(szBuff) ); printf( TEXT("0x%p Button [%s]\n"), hChild, szBuff ); } return 0; }
- 電卓の Button クラスのみを検索しています。
- コントロールの列挙をする場合は専用の EnumChildWindows 関数を利用して下さい。
- 単純に列挙する場合はこちらの方が便利です。
関連記事
- 指定ウインドウの状態
- 指定ウインドウの検索
- 指定の子ウインドウの検索
- Zオーダーのウインドウを取得
- Zオーダーの前後ウインドウを取得
- 最初の子ウインドウを取得
- トップレベル・ウインドウの列挙
- 可視ウインドウの列挙
- 特定アプリケーションの列挙
- 子ウインドウの列挙
- スレッド・ウインドウの列挙
※コメント投稿者のブログIDはブログ作成者のみに通知されます