プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

指定の子ウインドウの検索

2007年09月27日 09時18分02秒 | ウインドウ関連

子ウインドウ(コントロール)のウインドウ・ハンドルを取得するには FindWindowEx 関数で検索します。
検索には次の組み合わせで探します。(戻る)

  1. ウインドウのキャプションで検索
  2. ウインドウのクラス文字列で検索
  3. ウインドウのキャプションとクラスで検索

文字列は大文字と小文字を区別しないで検索されます。

プロトタイプ宣言

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 関数を利用して下さい。
  • 単純に列挙する場合はこちらの方が便利です。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 指定ウインドウの検索 | トップ | Zオーダーのウインドウを取得 »
最新の画像もっと見る

コメントを投稿

ウインドウ関連」カテゴリの最新記事