我没有太多的C++背景,但我已经成功地挂钩了一个窗口,并将其消息转换为我的应用程序可以使用的引发事件,我从继承NativeWindow和重写WndProc开始,并确定了我感兴趣的消息,例如WM_VSCROLL和WM_HSCROLL。
首先,是否有任何完整的实现可以引发所有常见的事件,如keypress,keydown,keyup,mousemove,mousedown,vscroll,hscroll,vresize,hresize of the window。我感兴趣的是确保ive正确地实现了这个类。
其次,如何适当地限制NativeWindow产生的事件,以限制实现的繁琐程度。
发布于 2009-12-22 05:40:45
我假设您正在谈论的是在另一个应用程序中挂钩一个窗口。这不是一个微不足道的问题,wparam和lparam参数可能包含指针而不是简单的值。然而,这些指针仅在您所挂接的进程的窗口的虚拟内存空间中有效。忽略这一点将为您带来一个AccessViolation异常。
您必须使用P/Invoke ReadProcessMemory()来读取指向的结构。这需要为每个单独的消息完成,你不能指望一个通用的实现。当你钩住一个像ListView或TreeView这样的非平凡窗口时,这可能会变得非常麻烦。
发布于 2009-12-22 06:01:07
执行此操作的大多数程序使用DLL注入来处理来自拥有该窗口的进程内部的事件。当然,您不能将托管代码注入到另一个进程中,只能将非常小心的本机代码注入到应用程序状态中。
你想要达到什么目的?挂起其他应用程序的“窗口”应该是最后的手段。
https://stackoverflow.com/questions/1942596
复制相似问题