【发布时间】:2017-03-21 08:29:33
【问题描述】:
几天前我开始使用 MouseKeyHook 库来拦截我们正在构建的应用程序的键盘按钮(应用程序使用数字键盘作为输入以通过 Akka 发送特定消息等)。
我已经设法使用控制台应用程序让它很快工作并在那里注册所有内容,但是一旦我将实现移动到特定服务中,它就停止工作(没有触发事件)。
代码示例如下:
public class KeypadService : IKeypad
{
private readonly IKeyboardEvents _keyboardEvents;
public KeypadService()
{
_keyboardEvents = Hook.GlobalEvents();
_keyboardEvents.KeyPress += GlobalHookKeyPress;
}
public void Enable(Action<string> codeEntered)
{
}
public void Disable()
{
_keyboardEvents.KeyPress -= GlobalHookKeyPress;
}
private static void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
{
// Do something
}
}
KeypadService 由 Autofac 在应用程序启动时创建(并且启动应用程序是一个控制台应用程序)。
builder.RegisterType<KeypadService>().As<IKeypad>().SingleInstance();
构造函数被命中,一切都在构造函数内部执行。
关于为什么它可能不会发射的任何线索?任何帮助表示赞赏!
【问题讨论】:
-
您是否尝试从 Windows 服务挂钩键盘?对吗?
标签: c# mousekeyhook