0

我没有太多 C++ 背景,但已成功挂钩一个窗口并将其 msgs 转换为我的应用程序可以使用的引发事件,我从 NativeWindow 继承并覆盖 WndProc 开始,并确定了我感兴趣的 msgs,WM_VSCROLL 和 WM_HSCROLL实例。

首先,是否有任何完整的实现可以引发所有常见事件,例如 keypress、keydown、keyup、mousemove、mousedown、vscroll、hscroll、vresize、hresize 窗口。我有兴趣确保我正确地实现了课程。

其次,如何正确限制 NativeWindow 产生的事件,以限制实现的繁琐性。

4

2 回答 2

2

我假设您正在谈论在另一个应用程序中挂钩窗口。这是一个不平凡的问题, wparam 和 lparam 参数可能包含指针而不是简单值。但是,这些指针仅在您挂接的窗口的进程的虚拟内存空间中有效。忽略这一点将为您购买 AccessViolation 异常。

您必须 P/Invoke ReadProcessMemory() 才能读取指向的结构。这需要为每条单独的消息完成,您不能指望通用实现。当你钩住像 ListView 或 TreeView 这样的非平凡窗口时,这可能会变得非常棘手。

于 2009-12-21T21:40:44.727 回答
1

大多数执行此操作的程序使用 DLL 注入来处理来自拥有窗口的进程内部的事件。当然,您不能将托管代码注入另一个进程,只有非常小心不要弄乱应用程序状态的本机代码。

你想达到什么目的?挂钩其他应用程序的窗口应该是最后的手段。

于 2009-12-21T22:01:06.640 回答