【问题标题】:Message loop (pump) when attaching a child window from an external application从外部应用程序附加子窗口时的消息循环(泵)
【发布时间】:2012-06-12 15:52:43
【问题描述】:

我即将将child window 附加到外部应用程序。子窗口将是一个无模式对话框。由于我不拥有外部应用程序(实际上是 Microsoft FSX)的源代码,我不知道如何挂钩到消息循环或父窗口本身的回调 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)

我的附加应用程序在它自己的进程中运行,所以我是否需要编写自己的消息循环,或者我的回调是否会被父级的消息泵调用?

前进的正确方法是什么?

-- 编辑关于SetWindowsHookEx 功能的答案--

值得注意的:

  1. How to hook external process with SetWindowsHookEx and WH_KEYBOARD
  2. SetWindowsHookEx in C#
  3. 可能不工作,另一个SetWindowsHookEx Example

【问题讨论】:

  • 你是怎么贴上去的?只是 SetParent?如果是这样,那么它会使用您的消息泵和处理程序,但可能会导致“奇怪”。
  • 我只是在创建父窗口句柄时设置了它。没有“古怪”的正确方法是什么?
  • 托管来自不同进程和 UI 线程的控件会导致焦点、激活等问题。没有主机进程窗口的帮助,没有标准的方法可以做到这一点。没有它帮助的最好方法是 DLL 注入,因此它在进程和主 UI 线程中运行。
  • 谢谢,非常感谢您的反馈!

标签: c++ windows winapi message-pump


【解决方案1】:

SetWindowsHookEx 是允许外部进程捕获窗口消息(除其他外)的 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多