C# 当全局按下键盘键(任意)时,需要调用一个函数。我正在使用user32.dll钩子 private IntPtr KeyboardHookDelegate(Int32代码、IntPtr wParam、IntPtr lParam) { 如果(代码

C# 当全局按下键盘键(任意)时,需要调用一个函数。我正在使用user32.dll钩子 private IntPtr KeyboardHookDelegate(Int32代码、IntPtr wParam、IntPtr lParam) { 如果(代码,c#,winforms,C#,Winforms,全局按下键时,必须调用函数KeyPressed()。我正在使用user32.dll挂钩。它可以工作,但只能工作3到4次,但几次之后就不工作了。我不知道你的过程。WindowsHooksHelper类 但我认为清理东西是错误的 到目前为止,我所知道的全球监听密钥的最干净的解决方案是: private IntPtr KeyboardHookDelegate(Int32 Code, IntPtr wParam, IntPtr lParam) { if (Code < 0) {

全局按下键时,必须调用函数KeyPressed()。我正在使用user32.dll挂钩。它可以工作,但只能工作3到4次,但几次之后就不工作了。

我不知道你的过程。WindowsHooksHelper类

但我认为清理东西是错误的

到目前为止,我所知道的全球监听密钥的最干净的解决方案是:

private IntPtr KeyboardHookDelegate(Int32 Code, IntPtr wParam, IntPtr lParam)
{
    if (Code < 0)
    {
        return Process.WindowsHooksHelper.CallNextHookEx(
            keyBoardHandle, Code, wParam, lParam);
    }

    if (KeyBoardKeyPressed != null)
    {
        KeyBoardKeyPressed(this, new EventArgs());

    }

    return Process.WindowsHooksHelper.CallNextHookEx(
        keyBoardHandle, Code, wParam, lParam);
}