如何发送键+ A + B键? (保持控制修改器“按下”)

时间:2012-06-05 18:09:00

标签: c# winapi coded-ui-tests

当我录制此序列时,它会失败。我知道我可以使用Keyboard.SendKeys(控件,“A”,ModifierKeys.Control)发送Control + A但是如何发送一个包含控件的序列并在按下一个字母之前释放该字母。

注意:我要查找的序列类似于用于注释掉一行Control + K + C的默认Visual Studio快捷方式

这可能是我只需要使用WinApi吗?

5 个答案:

答案 0 :(得分:6)

根据我对SendKeys.Send documentation的理解,它将是:

SendKeys.Send("^(KC)")

以下内容可在备注中找到:

  

要指定在按下其他几个键的同时按住SHIFT,CTRL和ALT的任意组合,请将这些键的代码括在括号中。例如,要指定在按下E和C时按住SHIFT,请使用“+(EC)”。要指定在按下E时按住SHIFT,然后按C而不按SHIFT,请使用“+ EC”。

答案 1 :(得分:4)

keybd_event非常方便(比“替换”SendInput更容易使用)。

keybd_event(Keys.Control, MapVirtualKey(Keys.Control, 0), 0, 0);
keybd_event(Keys.A, MapVirtualKey(Keys.A, 0), 0, 0);
keybd_event(Keys.A, MapVirtualKey(Keys.A, 0), KEYEVENTF_KEYUP, 0);
keybd_event(Keys.B, MapVirtualKey(Keys.B, 0), 0, 0);
keybd_event(Keys.B, MapVirtualKey(Keys.B, 0), KEYEVENTF_KEYUP, 0);
keybd_event(Keys.Control, MapVirtualKey(Keys.Control, 0), KEYEVENTF_KEYUP, 0);

如果您只需要按住control,alt和/或shift,请选中TCS's answer of SendKeys.Sendkeybd_event功能更强大,可让您按住任意键,并以任何顺序发布。

答案 2 :(得分:1)

如何使用

Keyboard.SendKeys(control, "A",ModifierKeys.Control); 
Keyboard.SendKeys(control, "B",ModifierKeys.Control); 

答案 3 :(得分:1)

这对我有用:

Keyboard.SendKeys("^(AB)"); 

答案 4 :(得分:0)

只需使用以下代码:

Keyboard.SendKeys("^AB");