37

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

このような;

Ctrl+ C:

System.Windows.Forms.SendKeys.SendWait("^c");

またはAlt+ F4:

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

しかし、SendKeys で「Windows キー」を送信できません。ex: Win+ E:を試し.SendWait("#e")ましたが、うまくいきません。「#」の代わりに何を使用すればよいですか?

ありがとう。

4

4 に答える 4

26

OK、あなたが本当に欲しいのはこれです:http: //inputsimulator.codeplex.com/

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

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

ただし、場合によっては、キーをアプリケーション(などALT+F4)に具体的に送信する必要があることに注意してください。その場合は、Formlibraryメソッドを使用します。その他の場合は、一般的に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

于 2012-04-28T21:47:37.633 に答える