[DllImport("user32.dll", EntryPoint = "keybd_event")]        public static extern void keybd_event(            byte bVk,    //虚拟键值            byte bScan,// 一般为0            int dwFlags,  //这里是整数类型  0 为按下,2为释放            int dwExtraInfo  //这里是整数类型 一般情况下设成为 0        );        
        [DllImport("USER32.DLL")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);        [DllImport("USER32.DLL")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);  private IntPtr hwnd;   
  private void button1_Click(object sender, EventArgs e)
  {
         hwnd = FindWindow("notepad", null);
         if (hwnd != IntPtr.Zero)
         {
                SetForegroundWindow(hwnd);
                Thread.Sleep(1000);
                keybd_event((byte)Keys.D, 0, 0, 0);         //按下D不松开
             
          }
               
  }结果记事本里只出来一个d么,额,按住d这个键不放开这样写不对嘛?

解决方案 »

  1.   

    While(True)
    {
    keybd_event((byte)Keys.D, 0, 0, 0); //按下D不松开
    }
    可以不?
      

  2.   

    楼上的可以先试一下按住一个键不松开,然后再试一下这段程序...
    While(True)
    {
    keybd_event((byte)Keys.D, 0, 0, 0); //按下D不松开
    }
      

  3.   

    SendMessage(hWnd,WM_KEYCHAR,VK_D,NULL);用SendMessage发送WM_KEYCHAR事件,WM_KEYCHAR才是发送输入的代码,WM_KEYDOWS和WM_KEYUP是键盘敲击消息,非输入消息。