我没有太多的C ++背景但已成功挂钩窗口并将其msgs转换为我的应用程序可以使用的凸起事件,我开始继承NativeWindow并重写WndProc并确定了我感兴趣的消息,WM_VSCROLL例如,WM_HSCROLL。
首先是否有任何完整的实现可以引发所有常见事件,如keypress,keydown,keyup,mousemove,mousedown,vscroll,hscroll,vresize,hresize of window。我有兴趣确保香港专业教育学院正确实施课程。
其次,如何正确限制NativeWindow生成的事件,以限制实现的干扰。
答案 0 :(得分:2)
我假设您正在谈论在另一个应用程序中挂钩窗口。这是一个非常重要的问题,wparam和lparam参数可能包含指针而不是简单的值。但是,这些指针仅在您挂钩的窗口的进程的虚拟内存空间中有效。忽略这将为您带来AccessViolation异常。
你必须P / Invoke ReadProcessMemory()来读取指向的结构。这需要针对每条消息进行,您不能指望通用实现。当您挂钩像ListView或TreeView这样的非平凡窗口时,这会变得非常毛茸茸。
答案 1 :(得分:1)
大多数执行此操作的程序使用DLL注入来处理拥有该窗口的进程内部的事件。当然,您不能将托管代码注入另一个进程,只有非常小心的本机代码才不会弄乱应用程序状态。
你想要完成什么?挂钩其他应用程序的“窗口”应该是最后的选择。