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

全系统外壳挂钩。NET使用非托管DLL

  •  0
  • Lusid  · 技术社区  · 16 年前

    我过去曾成功使用过以下CodeProject文章中提供的代码,但它似乎只在Vista/7上部分工作(我猜是因为UAC)。它适用于当前线程,但不会拾取系统范围内的活动。我尝试在清单中添加requireAdministrator,并对非托管程序集和托管程序集进行签名,但似乎无济于事。

    Using Window Messages to Implement Global System Hooks in C#

    我的主要目标是使用SetWindowsHookEx捕获非托管程序集中的HSHELL_WINDOWCREATED和HSHELL_WINDOWS DESTRYED消息,并通知C#应用程序,以便它可以实时使用这些信息。它基本上只需要知道系统中何时创建或销毁窗口。

    我还发现了一个纯C/C++的示例应用程序,它在Vista/7中运行良好,但我真的不想用C/C++编写整个应用程序,因为我更喜欢C#。

    System Wide Hook Example that Works

    有人知道如何修复第一篇CodeProject文章中的代码,使其在Vista/7上也能运行吗?或者有没有其他例子,说明我可以在不使用C#创建计时器和类似黑客的情况下做到这一点?

    谢谢, 马克

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ilya Khaprov    16 年前

    http://wpfklip.codeplex.com . 我已经实现了系统范围的shell钩子,因此程序能够捕获创建、激活等窗口。它是用c编写的#

        2
  •  0
  •   AdamS    16 年前

    但这里有一个关键点:

    2) Trickster写了一个键盘挂钩。这些在C#中工作得很好(因为它们是从窗口的某些部分而不是特定的应用程序钩住的,并且可以处理注入.NET)。

    推荐文章