代码之家  ›  专栏  ›  技术社区  ›  almog.ori

正确使用NativeWindow实现Windows挂钩

  •  0
  • almog.ori  · 技术社区  · 15 年前

    我没有太多的C++背景,但是已经成功地钩住了一个窗口,并将它的MSG转换成了我的应用程序可以消耗的事件,IVE是从NATEVELT继承和重写WndProc开始的,并且已经确定了我感兴趣的MSG,例如WMYVROLL和WMYHRONG。

    首先,是否存在任何引发所有常规事件的完整实现,如按键、按键、键向上、鼠标移动、鼠标向下、vscroll、hscroll、vresize、窗口的阈值。我有兴趣确保我正确地实现了类。

    其次,如何适当地限制NativeWindow生成的事件,以限制实现的聊天性。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Hans Passant    15 年前

    我假设您正在讨论在另一个应用程序中挂接一个窗口。这是一个非常重要的问题,wparam和lparam参数可能包含指针,而不是简单的值。但是,这些指针只在进程的虚拟内存空间中有效,而这个虚拟内存空间是您挂起的窗口。忽略这一点将使您获得一个访问冲突异常。

    必须p/invoke readprocessmemory()才能读取指向结构。这需要为每个单独的消息做,您不能指望通用实现。当你钩住一个像listview或treeview这样的非普通窗口时,它会变得非常毛毛。

        2
  •  1
  •   Ben Voigt    15 年前

    大多数这样做的程序都使用DLL注入来处理来自拥有窗口的进程内部的事件。当然,不能将托管代码注入到另一个进程中,只能注入非常小心的本机代码,以免弄乱应用程序状态。

    你想完成什么?挂接其他应用程序的“窗口”应该是最后的方法。

    推荐文章