SetWindowsHookEx与SetWinHookEventEx

时间:2014-02-25 20:35:26

标签: c# .net windows api

SetWindowsHookEx和SetWinEventHook之间的主要区别(工作原理/依赖关系/目的/最低要求)有哪些?

我对拦截与使用C#/ .Net从Windows服务运行Windows应用程序相关的事件感兴趣。

2 个答案:

答案 0 :(得分:5)

SetWindowsHookEx设置低级挂钩,可以拦截和重写几个系统范围的事件和消息(如捕获和重写键盘输入)。

SetWinEventHook允许您在没有窗口的情况下收听Window事件。它的级别更高,对系统的干扰更小。

从服务运行其他应用程序时,这都不是必需的。在NuGet上查看System.Diagnostics.Process(内置于.Net)或RunProcess

答案 1 :(得分:2)

  

如果我理解正确,您想使用您的服务   创建用于拦截在OS和OS之间流动的消息   运行Windows应用程序。

如果是这种情况,您的最佳选择是SetWindowsHookEx,这将创建一个系统级挂钩,您必须将其传递给其他应用程序。您应该注意,这需要您还构建c ++ .dll文件,您可以从中调用SetWindowsHookEx函数。 编码时要非常小心,因为错误可能会锁定整个系统,您需要重新启动才能恢复正常。