EnumWindows は画面上のすべてのトップレベルウィンドウを列挙します。
BOOL EnumWindows(WNDENUMPROC wndenmprc, LPARAM lParam);
パラメータ:
| wndenmpr | コールバック関数のアドレス |
| lParam | アプリケーション定義の値 |
EnumWindows関数は、 トップレベルウィンドウがすべて列挙されるまで、
またはコールバック関数がFALSEを返すまで列挙を続けます。
戻り値:
正常終了した場合は、TRUE値が返ります。
それ以外の場合は、FALSEが返ります。
画面上のウインドウを全て閉じる。
#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;
}