|
|
||||
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); } //------------------------------------------------------------------- |