簡體   English   中英

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

[英]How to send keys Control + A + B? (keep Control modifier “pressed”)

當我記錄這個序列時,它失敗了。 我知道我可以使用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"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM