6

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

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

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

4

5 回答 5

6

根据我从SendKeys.Send 文档中了解到的情况,它将是:

SendKeys.Send("^(KC)")

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

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

于 2012-06-05T18:18:18.793 回答
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 的答案SendKeys.Sendkeybd_event更强大,可以让你按住任何键,并以任何顺序释放。

于 2012-06-05T18:15:18.087 回答
1

只是使用怎么样

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

?

于 2012-06-05T18:12:52.220 回答
1

这对我有用:

Keyboard.SendKeys("^(AB)"); 
于 2017-03-24T10:40:06.423 回答
0

只需使用如下代码:

Keyboard.SendKeys("^AB"); 
于 2015-09-30T12:28:55.727 回答