画面に存在するウィンドウハンドルを列挙したい
Posted: 2013年2月06日(水) 01:15
こんにちは。
画面に存在するウィンドウハンドルを列挙したいと思っています。
ソースのようにすればウィンドウハンドルを得る事ができますが
ハンドルを持つものが全て列挙されてしまいます。
画面に存在するウィンドウ、要するに ALT + TAB で選択ができるウィンドウ(デスクトップを含む、でもデスクトップであることは判別したい)
をその中から判別したいのですがどのようにするのがよいのでしょうか。
windows XP以上、Visual Studio 2005
画面に存在するウィンドウハンドルを列挙したいと思っています。
ソースのようにすればウィンドウハンドルを得る事ができますが
ハンドルを持つものが全て列挙されてしまいます。
画面に存在するウィンドウ、要するに ALT + TAB で選択ができるウィンドウ(デスクトップを含む、でもデスクトップであることは判別したい)
をその中から判別したいのですがどのようにするのがよいのでしょうか。
windows XP以上、Visual Studio 2005
int s_ii = 0;
TCHAR s_sWork[256][256];
void test()
{
s_ii = 0;
EnumWindows( EnumWindowsProc , (LPARAM)0 );
}
Bool CALLBACK EnumWindowsProc( HWND hwnd , LPARAM lp )
{
TCHAR strWindowText[ 1024 ];
if( IsIconic( hwnd ) ) return TRUE; // 最小化は弾く
if( NULL != GetParent( hwnd ) ) return TRUE; // 子は弾く
// if( NULL != GetAncestor( hwnd, GA_PARENT ) ) return TRUE; // これでは判断できず
GetWindowText( hwnd , strWindowText, 1024 );
if (strWindowText[0] == 0) return TRUE; // タイトルのないものは弾く
STRING_cpy( s_sWork[s_ii++], strWindowText );
return TRUE;
}