web-dev-qa-db-ja.com

SendKeysを使用してWindowsキーを送信する

私はC#のショートカットに取り組んでいます。 SendKeysでCtrl、Alt、Shiftを実装することに成功しました。

このような;

Ctrl + C

_System.Windows.Forms.SendKeys.SendWait("^c");
_

または Alt + F4

_System.Windows.Forms.SendKeys.SendWait("%{F4}");
_

しかし、「Windowsキー」をSendKeysで送信することはできません。私は元: Win + E :.SendWait("#e")が動作していません。 「#」の代わりに何を使うべきですか?

ありがとう。

28
nuriaycan

本当に欲しいのはこれです: http://inputsimulator.codeplex.com/

_Win32 SendInput_メソッドをC#に公開するという大変な作業はすべて完了しています。これにより、windowsキーを直接送信できます。これはテストされ、機能します:

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);

ただし、場合によってはアプリケーションにキーを明確に送信したい場合があります(_ALT+F4_など)、その場合はFormを使用しますライブラリメソッド。他では、一般的にOSに送信したい場合は、上記を使用します。


古い

これを参照用にここに保持すると、すべてのオペレーティングシステムで機能するわけではなく、常に希望どおりに動作するとは限りません。これらのキーストロークをアプリに送信しようとしていることに注意してください。通常、OSはそれらを早期にインターセプトします。 Windows 7およびVistaの場合、早すぎる(Eが送信される前)。

SendWait("^({ESC}E)")またはSend("^({ESC}E)")

ここからの注意: http://msdn.Microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

SHIFT、CTRL、ALTの任意の組み合わせを押しながら他のいくつかのキーを押すように指定するには、それらのキーのコードを括弧で囲みます。たとえば、EとCを押しながらSHIFTを押し続けるように指定するには、「+(EC)」を使用します。 Eを押しながらSHIFTを押し、続いてSHIFTを押さずにCを押すように指定するには、「+ EC」を使用します。

ESCと(たとえば)Eを同時に押す必要があるため、これらを角かっこで囲む必要があることに注意してください。

22
yamen

Alt + F4は括弧内でのみ機能します

SendKeys.SendWait("(%{F4})");
4
Oleg Gavril

inputSimulatorを nugetパッケージ からダウンロードします。

次にこれを書いてください:

        var simu = new InputSimulator();
        simu.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);

私の場合、新しい垂直デスクトップを作成するには、3つのキーが必要で、次のようなコード(windows key + ctrl + D):

        simu.Keyboard.ModifiedKeyStroke(new[] { VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL }, VirtualKeyCode.VK_D);
0
Ali Rasouli
SetForegroundWindow( /* window to gain focus */ );
SendKeys.SendWait("^{ESC}"); // ^{ESC} is code for ctrl + esc which mimics the windows key.
0
m-jo