Получить список открытых окон приложений на C++ (Windows) ⇐ C++
-
Anonymous
Получить список открытых окон приложений на C++ (Windows)
Я хочу создать программу на C++ для вывода списка всех открытых в данный момент окон (например, браузера, проводника, Discord) и их положения/размеров. До сих пор мне удавалось составить список всех окон с помощью EnumWindows, но он включает в себя множество безымянных окон и таких вещей, как «Диспетчер программ», «Настройки» (которые у меня не открыты) и NVIDIA GeForce Overlay.
Как отфильтровать окна, которых нет в меню Alt+Tab или на панели задач?
Мой текущий код:
#include #include #pragma comment(lib, "User32.lib") BOOL IsAltTabWindow(HWND hwnd) { HWND hwndWalk = GetAncestor(hwnd, GA_ROOTOWNER); HWND hwndTry; while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry) { если (IsWindowVisible(hwndTry)) перерыв; hwndWalk = hwndTry; } LONG_PTR расширенный стиль = GetWindowLongPtr(hwnd, GWL_EXSTYLE); return (hwndWalk == hwnd) && ((extendedStyle & WS_EX_APPWINDOW) != 0 || (extendedStyle & WS_EX_TOOLWINDOW) == 0); } BOOL CALLBACK WindowCallback(HWND hwnd, LPARAM lParam) { константный DWORD TITLE_SIZE = 1024; TCHAR windowTitle[TITLE_SIZE]; GetWindowText(hwnd, windowTitle, TITLE_SIZE); if (IsAltTabWindow(hwnd) && IsWindowVisible(hwnd)) std::cout
Я хочу создать программу на C++ для вывода списка всех открытых в данный момент окон (например, браузера, проводника, Discord) и их положения/размеров. До сих пор мне удавалось составить список всех окон с помощью EnumWindows, но он включает в себя множество безымянных окон и таких вещей, как «Диспетчер программ», «Настройки» (которые у меня не открыты) и NVIDIA GeForce Overlay.
Как отфильтровать окна, которых нет в меню Alt+Tab или на панели задач?
Мой текущий код:
#include #include #pragma comment(lib, "User32.lib") BOOL IsAltTabWindow(HWND hwnd) { HWND hwndWalk = GetAncestor(hwnd, GA_ROOTOWNER); HWND hwndTry; while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry) { если (IsWindowVisible(hwndTry)) перерыв; hwndWalk = hwndTry; } LONG_PTR расширенный стиль = GetWindowLongPtr(hwnd, GWL_EXSTYLE); return (hwndWalk == hwnd) && ((extendedStyle & WS_EX_APPWINDOW) != 0 || (extendedStyle & WS_EX_TOOLWINDOW) == 0); } BOOL CALLBACK WindowCallback(HWND hwnd, LPARAM lParam) { константный DWORD TITLE_SIZE = 1024; TCHAR windowTitle[TITLE_SIZE]; GetWindowText(hwnd, windowTitle, TITLE_SIZE); if (IsAltTabWindow(hwnd) && IsWindowVisible(hwnd)) std::cout
Мобильная версия