我正在使用SetWindowsHookEx在c#中创建一个低级键盘钩子,问题是如何让on key事件函数在主线程的其他线程上运行?另外我目前还没有主线程以外的线程,所以如何创建一个将停止直到键盘钩子事件发生的线程?
答案 0 :(得分:2)
以下是C# Keyboard hook的代码。
你只需要调用Hook.CreateHook(METHODNAMEHERE);在一个新的Thread中(参见Thread类)。
答案 1 :(得分:0)
由于答案如何在新线程上设置挂钩,这只回答了问题的第二部分:
如果您使用的是Windows窗体应用程序,那么使用其他线程会有一些问题。他们需要使用Control.Invoke与表单控件进行通信。
除此之外,启动“worker”线程,并使其等待某些ManualResetEvent或AutoResetEvent。当键盘钩子收到按键通知时,使用一些“共享”字段放置键,然后重置事件,“等待”线程可以处理它。
不要忘记在“共享”字段周围实现正确的锁定。