代码之家  ›  专栏  ›  技术社区  ›  Paya

低级鼠标钩子和DirectX

  •  9
  • Paya  · 技术社区  · 16 年前

    我用低级鼠标钩住 SetWindowsHookEx 过滤掉这些点击。它工作得比较好,除了 WPF 应用。我想这是因为这些应用程序使用 DirectX DirectInput 对于输入处理,这就是为什么我不能过滤掉这些应用程序中的点击,因为它们直接从驱动程序获取输入。

    WPF公司 / 应用?

    WPF公司 GUI ,所以我也需要过滤其中的点击。

    更新

    我想我可以通过编写自己的过滤驱动程序来解决这个问题,但是由于我没有任何编写驱动程序的经验,请告诉我是否有其他解决方案。

    API挂钩资源

    我发现了一些关于API挂钩的有用链接。以此作为参考。

    Hooking Windows API
    API hooking revealed
    API hooking revealed Part 2
    Hijack Textout Calls From Notepad
    madCodeHook
    IAT Function Hooking

    WPF does not use DirectInput, but standard Win32 messages for input handling (除了stylus,它是我所有问题的根源,因为我使用stylus进行开发,我不知道WPF应用程序支持stylus)。然而,要过滤使用DirectInput的应用程序中的点击,就必须钩住API,正如公认的答案所解释的那样。

    1 回复  |  直到 9 年前
        1
  •  6
  •   Karel Petranek    15 年前

    您可以使用一个名为API挂钩的方法—重写对库函数的特定调用,并赋予它们您自己的行为。有许多挂钩库可以简化此任务,最常用的是:
    * Microsoft Detours
    MadCodeHook
    * Deviare API Hook
    API Hijack

    另请参见 Wikipedia example of hooking Direct3D .

    您只需要将挂钩库插入到系统中的每个进程中,但从您的问题来看,我假设您已经实现了这一点。

    推荐文章