我正在尝试在Windows服务中编写键盘记录程序。所以我使用了Application.Run()方法
protected override void OnStart(string[] args)
{
_hookID = SetHook(_proc);
Application.Run();
}
我尝试使用installutil.exe命令提示符安装该服务,它显示为:
The transacted install has completed.
The installation failed, and the rollback has been performed.
如果我删除Application.Run(),它正在安装但键盘记录不起作用。 Application.Run()的任何替代方法,用于调用方法
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
}
请帮我看看如何运行Application.Run()或Application.Run()的任何其他替代方法来调用函数HookCallBack
答案 0 :(得分:0)
我认为您误解了服务的运作方式。服务本身只是来自Windows的服务控制器的包装器,其中处理启动/停止/暂停和其他与服务相关的操作系统命令。
您需要在服务中创建一个执行应用程序逻辑的线程。之后应该没有问题。
请注意,我怀疑您可以通过使用Windows服务来实现目标。由于安全性,Windows服务默认禁用桌面交互。要访问桌面或任何其他相关的UI内容,您需要使用“允许服务与桌面交互”复选框更改服务的安全设置(但我无法告诉您这是否适合您,因为您确实可以检查用户输入的密钥。
请查看此MSDN article。