アトリエ ぺっぺ

トップページ > プログラムTips > タスクバーに表示されるアプリの一覧表示

◆ タスクバーに表示されるアプリの一覧取得
タスクバーに表示されているアプリケーションのウィンドウハンドルを取得するには、EnumWindows()関数を使用します。
EnumWindowsは、今実行されている全てのアプリケーションのウィンドウ分、そのトップレベルのウィンドウハンドルを指定されたコールバック関数に渡します。
    EnumWindows(EnumWindowsProc, (LPARAM)0);
第一引数のEnumWindowsProcにはコールバック関数のポインタを渡します。
EnumWindowsProcは使用の用途によって、中身をつくってください。
コールバック関数は、staticでなければいけません。
第二引数のLPARAMには、コールバック関数に渡したいものを設定します。

例として、タスクバーに表示されている全てのアプリケーションのキャプションに表示されている文字列を集めるコードを示します。
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);

void fnc()
{
    CStringArray arr;
    // arrにキャプションの文字列の一覧を収集します。
    EnumWindows(EnumWindowsProc, (LPARAM)&arr);
}

static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    CStringArray* parr = (CStringArray*)lParam;
    CString str;
    // 可視状態かどうか
    if( ( GetWindowLong( hwnd,  GWL_STYLE ) & WS_VISIBLE ) ){
        // タスクバーに表示されているかどうか
        if(! (GetWindowLong(hwnd,GWL_EXSTYLE) & WS_EX_TOOLWINDOW) ){
    
            CWnd* pWnd = CWnd::FromHandle(hwnd);
            if(pWnd){
                
                pWnd->GetWindowText(str);
                parr->Add(str);
            }

        }
    }
    return TRUE;
}
 

(C) 2002 atelier-peppe
ababa@atelier-peppe.sakura.ne.jp