ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

ハンドルから GetClassName でクラス名取得 

更新 : 2010/05/15

 



解説:
起動しているアプリケーションのウィンドウハンドルは、Win32API の FindWindowEx 関数や WindowFromPoint 関数で取得できます。取得したウィンドウハンドルからは、いろいろな情報を得ることができます。

ここでは、そうした情報の中から、クラス名を取得してみます(WinSight では {xxx} などと表示されます)。

使用例:
"Project1.exe" をダブルクリックした後、すでに起動しているソフトのウィンドウにマウスを乗せると Label1 の Caption に "TForm1" などと表示されます。

準備として、Label、Timer をひとつずつ適当に配置してください。

"Project1.exe" をダブルクリックして、起動しているソフトにマウスをあててみてください。
Label1 の Caption にクラス名が表示されます。

OnTimer イベントハンドラでは、起動中のソフトから WindowFromPoint 関数を使って、ウィンドウハンドルを取得しています。
取得したハンドルを引数として、Win32API の GetClassName 関数でクラス名を得ています。

//-------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    POINT pos;
    GetCursorPos(&pos);
    HWND hWnd = WindowFromPoint(pos);

    // ウィンドウハンドルからクラス名を取得
    char classBuf[256];
    GetClassName(hWnd,                 // ウィンドウのハンドル
                         classBuf,             // クラス名
                         sizeof(classBuf));  // クラス名バッファのサイズ

    Label1->Caption = "マウス下のウィンドウクラス名: " + StrPas(classBuf);
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.