SetWindowsHookEx和SetWinEventHook之间的主要区别(工作原理/依赖关系/目的/最低要求)有哪些?
我对拦截与使用C#/ .Net从Windows服务运行Windows应用程序相关的事件感兴趣。
答案 0 :(得分:5)
SetWindowsHookEx
设置低级挂钩,可以拦截和重写几个系统范围的事件和消息(如捕获和重写键盘输入)。
SetWinEventHook
允许您在没有窗口的情况下收听Window事件。它的级别更高,对系统的干扰更小。
从服务运行其他应用程序时,这都不是必需的。在NuGet上查看System.Diagnostics.Process
(内置于.Net)或RunProcess
答案 1 :(得分:2)
如果我理解正确,您想使用您的服务 创建用于拦截在OS和OS之间流动的消息 运行Windows应用程序。
如果是这种情况,您的最佳选择是SetWindowsHookEx,这将创建一个系统级挂钩,您必须将其传递给其他应用程序。您应该注意,这需要您还构建c ++ .dll文件,您可以从中调用SetWindowsHookEx函数。 编码时要非常小心,因为错误可能会锁定整个系统,您需要重新启动才能恢复正常。