是否可以创建枚举无法找到的win32消息传递窗口?

时间:2014-10-23 13:52:31

标签: c++ winapi window

我正在尝试使用以下代码枚举所有win32窗口:

EnumChildWindows(GetDesktopWindow(),
                 WindowManager::enumChildWindows,
                 reinterpret_cast<LPARAM>(this));

BOOL CALLBACK WindowManager::enumChildWindows(HWND hwnd, LPARAM lParam) {
    WindowManager* manager = reinterpret_cast<WindowManager*>(lParam);

    //
    // Do stuff with child window handle (hwnd)
    //

    // Return TRUE to continue enumeration, FALSE to stop.
    return TRUE;
}

基本上,我通过从WinAPI调用GetDesktopWindow( VOID )函数获得最顶层的窗口,并通过从WinAPI再次调用EnumChildWindows( __in_opt HWND hWndParent, __in WNDENUMPROC lpEnumFunc, __in LPARAM lParam)函数来枚举子窗口。

简单来说,我的问题是,我可以通过这种方法错过任何win32窗口吗?任何人都可以隐藏win32窗口,这样这种方法无法枚举它吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

按照您的方式(通过EnumChildWindows(GetDesktopWindow)) - 可以:只创建仅消息窗口。  附:但您可以通过EnumChildWindows枚举仅限消息的窗口(GetAindstor(FindWindowEx(HWND_MESSAGE,0,0,0),GA_PARENT)):请参阅How come FindWindow finds a window that EnumChildWindows doesn't?