首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用NativeWindow实现windows钩子

正确使用NativeWindow实现windows钩子
EN

Stack Overflow用户
提问于 2009-12-22 04:59:29
回答 2查看 850关注 0票数 0

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

首先,是否有任何完整的实现可以引发所有常见的事件,如keypress,keydown,keyup,mousemove,mousedown,vscroll,hscroll,vresize,hresize of the window。我感兴趣的是确保ive正确地实现了这个类。

其次,如何适当地限制NativeWindow产生的事件,以限制实现的繁琐程度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-22 05:40:45

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

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

票数 2
EN

Stack Overflow用户

发布于 2009-12-22 06:01:07

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1942596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档