当我记录这个序列时它失败了。我知道我可以使用 Keyboard.SendKeys(control, "A",ModifierKeys.Control) 发送 Control + A,但是如何发送一个序列来保持控制并在按下下一个字母之前释放该字母。
注意:我正在寻找的序列类似于用于注释一行 Control + K + C 的默认 Visual Studio 快捷方式
这可能是我只需要使用 WinApi 的东西吗?
当我记录这个序列时它失败了。我知道我可以使用 Keyboard.SendKeys(control, "A",ModifierKeys.Control) 发送 Control + A,但是如何发送一个序列来保持控制并在按下下一个字母之前释放该字母。
注意:我正在寻找的序列类似于用于注释一行 Control + K + C 的默认 Visual Studio 快捷方式
这可能是我只需要使用 WinApi 的东西吗?
根据我从SendKeys.Send 文档中了解到的情况,它将是:
SendKeys.Send("^(KC)")
可以在备注中找到以下内容:
要指定在按下其他几个键的同时按住 SHIFT、CTRL 和 ALT 的任意组合,请将这些键的代码括在括号中。例如,要指定在按下 E 和 C 时按住 SHIFT,请使用“+(EC)”。要指定在按 E 时按住 SHIFT,然后按 C 而不按 SHIFT,请使用“+EC”。
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.Send
。 keybd_event
更强大,可以让你按住任何键,并以任何顺序释放。
只是使用怎么样
Keyboard.SendKeys(control, "A",ModifierKeys.Control);
Keyboard.SendKeys(control, "B",ModifierKeys.Control);
?
这对我有用:
Keyboard.SendKeys("^(AB)");
只需使用如下代码:
Keyboard.SendKeys("^AB");