CoInitialize(NULL)通过创建隐藏窗口来创建STA。如何获得此窗口的HWND句柄?
在我尝试的一个例子中,函数EnumThreadWindows不起作用:
...
CoInitialize(NULL);
EnumThreadWindows(GetCurrentThreadId(), EnumThreadWndProc, 0);
...
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
{
m_hwnd = hwnd;
return FALSE;
}
什么都没有进入EnumThreadWndProc。
有什么想法吗?
答案 0 :(得分:3)
此隐藏窗口为仅消息窗口,不可见,没有z顺序,无法枚举,也不接收广播消息。该窗口只是发送消息。
要查找仅消息窗口,请在FindWindowEx函数的hwndParent参数中指定HWND_MESSAGE。此外,如果hwndParent和hwndChildAfter参数均为NULL,FindWindowEx将搜索仅限消息的窗口以及顶级窗口。
来源: MSDN
答案 1 :(得分:2)
顺便说一下,我在这里非常小心 - 你 真的 不应该向你不拥有的Windows发送窗口消息。您的代码很可能在未来的Windows版本中中断。