void KeyDown(object sender, KeyEventArgs e)
        {
            IntPtr ipt = FindWindow(null, "abc - 记事本");
            if (ipt != IntPtr.Zero)
            {
                SetForegroundWindow(ipt);
                keybd_event((byte)Keys.A, 0, 0, 0);
                keybd_event((byte)Keys.A, 0, 2, 0);
            }
        }
我用这个方法改键,为什么我按一下键,会在记事本上打出一连串的a,我数了一下,一共是34个,我要求的是按一下键,不管按什么键,只打出一个a啊,要如何实现

解决方案 »

  1.   

    SendMessage(hWnd,WM_KEYCHAR,VK_D,NULL);
    用键盘钩子时候,他的过程函数会执行两次
    keybd_event(VK_Q, 0, 0, 0);
    //如果释放
     keybd_event(VK_Q, 0, KEYEVENTF_KEYUP, 0);
      

  2.   

       keybd_event((byte)Keys.A, 0, 0, 0);
       keybd_event((byte)Keys.A, 0, 2, 0);
    就是按下,弹起啊,
    SendMessage(hWnd,WM_KEYCHAR,VK_D,NULL);中WM_KEYCHAR的wparam码是多少要,要不用不了,我只知道一个WM_CHAR,但是没用