【发布时间】:2014-02-25 20:35:26
【问题描述】:
SetWindowsHookEx 和 SetWinEventHook 之间的主要区别是什么(它的工作原理/依赖关系/目的/最低要求)?
我对使用 C#/.Net 从 Windows 服务拦截与运行 Windows 应用程序相关的事件感兴趣。
【问题讨论】:
-
反对者请解释。这是个好问题。
SetWindowsHookEx 和 SetWinEventHook 之间的主要区别是什么(它的工作原理/依赖关系/目的/最低要求)?
我对使用 C#/.Net 从 Windows 服务拦截与运行 Windows 应用程序相关的事件感兴趣。
【问题讨论】:
SetWindowsHookEx 设置低级挂钩,可以拦截和重写多个系统范围的事件和消息(如捕获和重写键盘输入)。
SetWinEventHook 允许您在没有窗口的情况下监听 Window 事件。它的级别更高,对系统的侵入性更小。
从服务中运行其他应用程序都不需要这些。在 NuGet 上查看 System.Diagnostics.Process(内置于 .Net)或 RunProcess
【讨论】:
如果我对您的理解正确,您想使用您提供的服务 创建用于拦截在操作系统和操作系统之间流动的消息 运行 Windows 应用程序。
如果是这种情况,您的最佳选择是SetWindowsHookEx,这将创建一个系统级挂钩,您必须将其过滤传递给其他应用程序。您应该注意,这还需要您构建 c++ .dll 文件,您将从该文件中调用 SetWindowsHookEx 函数。 编码时要非常小心,因为错误可能会锁定整个系统,您需要重新启动才能恢复正常。
【讨论】: