如何使用SendMessage和WM_KEYDOWN向其他窗口发送按键?
我的C#代码如下:
查找打开的记事本,然后向里面写入“A A”
IntPtr hwnd = FindWindow(null, "无标题 - 记事本");
IntPtr htextbox = FindWindowEx(hwnd, IntPtr.Zero, "EDIT", null);
// SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);//关闭记事本
SendMessage(htextbox, WM_CHAR, 65, 0);   //输入A
SendMessage(htextbox, WM_KEYDOWN, VK_SPACE, 0);//实现空格
SendMessage(htextbox, WM_CHAR, 65, 0);   //输入A可以输入两个A,但是两个A中间的空格就是出不来WM_KEYDOWN和UP就没有用成功过,真是郁闷。

解决方案 »

  1.   

    求教高手啊,怎么用WM_KEYDOWN传按键啊?
      

  2.   

    先WM_KEYDOWN再WM_KEYUP再重新WM_KEYDOWN
      

  3.   

                SendMessage(htextbox, WM_CHAR, 65, 0);   //输入A
                SendMessage(htextbox, WM_KEYDOWN, VK_SPACE, 0);//实现空格 
                SendMessage(htextbox, WM_KEYUP, VK_SPACE, 0);//实现空格 
                SendMessage(htextbox, WM_KEYDOWN, VK_SPACE, 0);//实现空格 
                SendMessage(htextbox, WM_CHAR, 65, 0);   //输入A还是没有空格出现,请高手指教
      

  4.   

     SendMessage(htextbox, WM_CHAR, VK_SPACE, 0);//实现空格 
      

  5.   


    谢谢。其实我的本意不是要打出空格,而是想知道keyup keydown这种方式怎么用。因为我想模拟键盘发出ctrl+A之类的键盘消息。
      

  6.   

    发现这个问题好多人问,都没有找到解决方法难道要放弃了?
    有没有其他方式能够实现发组合键给后台运行的程序的控件的?比如ctrl+A.注意,是后台运行的,不是放到前台,然后再发。请大侠指点迷津,谢谢谢谢
      

  7.   

    SendMessage(htextbox, WM_CHAR, 32, 0);