我尝试从其他窗口获取一些消息。我需要按名称查找窗口,我使用了https___www.sec.gov_Archives_edgar_data_100240_0000950144-94-000787.txt
。如何获取活动窗口并从中获取消息?
当我在GetMessage()中添加FindWindowW()
时,它不起作用。
hwnd
答案 0 :(得分:0)
只有创建窗口的线程才能直接接收和发送该窗口的消息。 GetMessage()
从调用线程的消息队列中检索消息,因此它只能与调用线程拥有的窗口一起使用。
由于您试图捕获不是您自己的窗口的消息,因此必须使用SetWindowsHookEx()
或SetWinEventHook()
将钩子回调安装到该窗口拥有的线程中,然后该回调可以拦截该窗口所需的消息/事件。您可以使用GetWindowThreadProcessId()
获取拥有该窗口的进程和线程的ID。
如果您使用SetWindowsHookEx()
并试图在另一个进程中挂接窗口,则您的回调必须驻留在DLL中,以便可以将其注入该进程中。您无需使用SetWinEventHook()
来做到这一点。