ウィンドウを列挙する


EnumWindows は画面上のすべてのトップレベルウィンドウを列挙します。

BOOL EnumWindows(WNDENUMPROC wndenmprc, LPARAM lParam);

パラメータ

wndenmpr コールバック関数のアドレス
lParam アプリケーション定義の値

EnumWindows関数は、 トップレベルウィンドウがすべて列挙されるまで、
またはコールバック関数がFALSEを返すまで列挙を続けます。

戻り値
   正常終了した場合は、TRUE値が返ります。
   それ以外の場合は、FALSEが返ります。


Sample code

画面上のウインドウを全て閉じる。


#include <windows.h>
#include <tchar.h>

BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam);

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    UNREFERENCED_PARAMETER(hInstance);
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
    UNREFERENCED_PARAMETER(nCmdShow);
    
    EnumWindows(EnumWndProc, 0);
    return EXIT_SUCCESS;
}

//コールバック関数
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    
    TCHAR szClassName[256];
    GetClassName(hWnd, szClassName, sizeof(szClassName));
    
    if (IsWindowVisible(hWnd) && lstrcmp(szClassName, TEXT("Progman")) != 0 && lstrcmp(szClassName, TEXT("Shell_TrayWnd")) != 0) {
        SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
    }
    return TRUE;
}

一覧メニューへ