C++ Builder CE ローカルな別プロセスの制御

FindWindow & EnumChildProcを使う win32 その1

#include <stdio.h>
#include <windows.h>

// コールバック関数
BOOL CALLBACK EnumChildProc( HWND hWnd, LPARAM lParam )
{
 TCHAR szBuff[ 1024 ];
 
 
 GetWindowText( hWnd, szBuff, sizeof(szBuff) );
 printf( "├[%s]\n", szBuff );
 return TRUE;
}

// メイン関数
int main( void )
{
 HWND hCalc;
 
 if ( (hCalc = FindWindow(NULL,"Form1")) != NULL ){
  printf( "Form1のコントロール列挙\n" );
  EnumChildWindows( hCalc, EnumChildProc, NULL );
 }
  else
    printf("Form1 not found");

    getchar();
 return 0;
}

というプログラムで、別プロセスのVCLプログラム(Form1)を探して、そこに含まれるコントロールを列挙する。

これが動いている状態で、上記プログラムを実行すると、

が得られます。コントロールとして、movie,still,captureのボタンあるいはeditボックス(中身が5)というものが把握されています。適切にイベントをそれぞれのコントロールに送れれば、遠隔操作が可能となります。上記で”5”というのは録画のデフォルトの長さ(秒数)なんだけど、これでサーチするのもなんなので少し改良しましたが、次の記事で。

コメント