Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <vector>
- struct EnumWindowsCallbackArgs {
- EnumWindowsCallbackArgs(DWORD p) : pid(p) { }
- const DWORD pid;
- std::vector<HWND> handles;
- };
- static BOOL CALLBACK EnumWindowsCallback(HWND hnd, LPARAM lParam)
- {
- EnumWindowsCallbackArgs *args = (EnumWindowsCallbackArgs *)lParam;
- DWORD windowPID;
- (void)::GetWindowThreadProcessId(hnd, &windowPID);
- if (windowPID == args->pid) {
- args->handles.push_back(hnd);
- }
- return TRUE;
- }
- std::vector<HWND> getToplevelWindows()
- {
- EnumWindowsCallbackArgs args(::GetCurrentProcessId());
- if (::EnumWindows(&EnumWindowsCallback, (LPARAM)&args) == FALSE) {
- // XXX Log error here
- return std::vector<HWND>();
- }
- return args.handles;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement