6

このシーケンスを記録すると失敗します。Keyboard.SendKeys(control, "A",ModifierKeys.Control) を使用して Control + A を送信できることはわかっていますが、次の文字を押す前に、制御を保持して文字を解放するシーケンスを送信するにはどうすればよいですか。

注:私が探しているシーケンスは、行をコメントアウトするためのデフォルトのVisual Studioショートカットに似ています Control + K + C

これはおそらく WinApi を使用する必要があるものですか?

4

5 に答える 5

6

SendKeys.Send ドキュメントから私が理解したことから、次のようになります。

SendKeys.Send("^(KC)")

備考欄には以下の記載が見られます。

他のいくつかのキーが押されている間、SHIFT、CTRL、および ALT の任意の組み合わせを押し続ける必要があることを指定するには、それらのキーのコードを括弧で囲みます。たとえば、SHIFT を押しながら E と C を押すように指定するには、「+(EC)」を使用します。SHIFT を押しながら E を押し、続いて SHIFT なしで C を押すように指定するには、「+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);

コントロール、alt、および/またはシフトを押し続ける必要がある場合は、TCS の答えをSendKeys.Send確認してください。 keybd_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 に答える
0

以下のようなコードを使用するだけです。

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