【发布时间】:2010-12-08 10:57:39
【问题描述】:
我过去成功使用了以下 CodeProject 文章中提供的代码,但它似乎只能在 Vista/7 上部分工作(我猜是因为 UAC)。它适用于当前线程,但不会获取系统范围的活动。我尝试在清单中添加 requireAdministrator 并对非托管和托管程序集进行签名,但这似乎没有帮助。
Using Window Messages to Implement Global System Hooks in C#
我的主要目标是使用 SetWindowsHookEx 捕获非托管程序集中的 HSHELL_WINDOWCREATED 和 HSHELL_WINDOWDESTROYED 消息,并通知 C# 应用程序以便它可以实时使用这些信息。它基本上只需要知道系统中何时创建或销毁窗口。
我还发现了一个纯 C/C++ 示例应用程序,它在 Vista/7 中运行良好,但我真的不想用 C/C++ 编写整个应用程序,因为我更喜欢 C#。
System Wide Hook Example that Works
有人知道如何修复第一篇 CodeProject 文章中的代码,以便它也能在 Vista/7 上运行吗?或者有任何其他示例说明我无需在 C# 中创建计时器和类似的技巧即可做到这一点?
谢谢, 马克
【问题讨论】:
标签: c# windows unmanaged hook user32