在程序中通过测试,用SendKeys.SendWait()向某个窗口发送单个按键没问题,发送CTRL+数字组合键时没有反应
我想是不是因为数字键有键盘上面一排和右侧小键盘的区别的原因呢?请高手指点一下,谢谢

解决方案 »

  1.   

    主键盘上的0~9 和Num Lock打开时数字键盘上的0~9 不一样的吧?
      

  2.   

    用SEND()也不行,没反应
     SendKeys.Send("^+1");
     SendKeys.Send("^1");
      

  3.   

    若要发送一个键击给某个类并立即继续程序流,请使用Send。若要等待键击启动的任何进程,请使用SendWait。  SendKeys.Send("^+{TAB}");  
      

  4.   

    SendKeys.Send("^+{1}"); 
     这样也不行
      

  5.   

     SendKeys.Send("^2"); 我直接这样写是可以的。。
      

  6.   

                System.Windows.Forms.SendKeys.Send("^1");
      

  7.   

    SendKeys.Send("^1"); 
    测试没问题
    不知道楼主是否激活了要接收按键的窗口
    另外,楼主确认有Ctrl+1的快捷键吗
      

  8.   


    快捷键是肯定有的,我做的软件叫《QQ华夏机器人》,在天空软件站已经挂了很长时间了,是QQ华夏游戏的辅助软件,我的这个程序就是发送模拟按键到QQ华夏游戏窗口中,在不使用CTRL+1组合键的时候,比如单个按钮0~9发送就没有问题,而且按键盘上的CTRL+1游戏中就有反应,但通过程序发送组合键过去就没反应,不知道怎么回事
      

  9.   

    [DllImport ( "user32.dll", EntryPoint = "FindWindow", SetLastError = true )]
    private static extern IntPtr FindWindow( string lpClassName, string lpWindowName );[DllImport ( "user32.dll", EntryPoint = "FindWindowEx", SetLastError = true )]
    private static extern IntPtr FindWindowEx( IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow );
    IntPtr hwnd = FindWindow ( null, "" ); 
    SendKeys.SendWait ( "^s" );  
      

  10.   


    我用窗口置前的函数了,不行
    刚才我找了下面一个函数,但还是有问题                        keybd_event((byte)Keys.ControlKey, 0, 0 ,0);
                            keybd_event((byte)Keys.D1, 0, 0 , 0);
                            keybd_event((byte)Keys.D1, 0, 2, 0);
                            keybd_event((byte)Keys.ControlKey, 0,2, 0);上面这个也不管用,但如果把抬起按键部分删除或者把抬起的数值2改成1,就能用,问题是CTRL会一直起作用,晕了~~~