C#如何模擬鍵盤按鍵???
有一組合鍵,要用C#實現怎麼做?
例如:我要用c#自動發送:Ctrl+Alt+F2這樣的組合鍵,程序應該怎麼寫?

解决方案 »

  1.   

    同时按Ctrl + Shift + 回车:if event.ctrlKey &&event.shiftKey&& event.keyCode==13) 
    {
    }把13修改成F2的keycode即可.
      

  2.   

    用api
    keybd_event
    或者
    sendMessage
      

  3.   

    我用C#里面的那个sendkeys(“^%F2”)好像不行。
      

  4.   

    给自己程序发还是别的进程,别的发组合键就只能keybd_event了。
      

  5.   

    楼主如果你用sendkeys对目标程序都不能起作用那么你调用api同样不会起作用的
    我想问下楼主你是否是想将键盘消息发送给一个类似游戏程序这样的东东?如果他被类似np之类保护了的话你就不用考虑api
    发送键盘消息了,用驱动级的键盘模拟吧
      

  6.   

    个人觉得SendKeys这个類应该可以。
      

  7.   

    我只是想把这个消息发送给Windwos系统,用它来自动切换显示器(因为我的电脑上装了一个CRT显示器,还有一个LCD显示屏,所以要切换(我只想用程序实现))
      

  8.   

    keybd_event和SendMessage都可以本来想写代码,看了下只有20分,算了,你自己琢磨吧
      

  9.   

    以下代码是我测试的时候用的.keybd_event和sendmessage和sendkeys都用过了,但它只能向一个应用程序发送消息.
    我要向系统发送系统键却无法做到.
    例:模拟按下[Win]+R就可以打开运行对话框.
     Input[] input = new Input[4];             input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
                 input[0].ki.wVk = input[3].ki.wVk = VK_LWIN;
                 input[1].ki.wVk = input[2].ki.wVk = (short)'R';             input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
                 input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount();             SendInput(4, input, 255);
      

  10.   

                keybd_event(Keys.LWin, 0, 0, 0);
                keybd_event(Keys.R, 0, 0, 0);
                keybd_event(Keys.R, 0, 2, 0);
                keybd_event(Keys.LWin, 0, 2, 0);