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

sto*_*toj 6 c# winapi coded-ui-tests

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

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

这可能是我需要使用WinApi的东西吗?

TCS*_*TCS 6

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

SendKeys.Send("^(KC)")
Run Code Online (Sandbox Code Playgroud)

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

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


Ben*_*igt 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);
Run Code Online (Sandbox Code Playgroud)

如果您只需要按住 control、alt 和/或 Shift,请检查TCS 的答案SendKeys.Sendkeybd_event更强大,可以让您按住任意键,然后按任意顺序释放。