Подтвердить что ты не робот

Отправка ключа Windows с помощью SendKeys

Я работаю над ярлыками на С#. Мне удалось реализовать Ctrl, Alt и Shift с помощью SendKeys.

Как это:

Ctrl + C:

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

или Alt + F4:

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

Но я не могу отправить "Windows Key" с SendKeys. Я попробовал ex: Win + E: .SendWait("#e"), но он не работает. Что я должен использовать вместо "#"?

Спасибо.

4b9b3361

Ответ 1

OK получается, что вы действительно хотите: http://inputsimulator.codeplex.com/

Что сделало всю тяжелую работу по раскрытию методов Win32 SendInput для С#. Это позволяет вам напрямую отправить ключ Windows. Это проверено и работает:

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

Примечание, однако в некоторых случаях вы хотите специально отправить ключ в приложение (например, ALT+F4), и в этом случае используйте библиотечный метод Form. В других случаях вы хотите отправить его в ОС в целом, используйте приведенное выше.


Старый

Сохраняя это здесь для справки, он не будет работать во всех операционных системах и не всегда будет вести себя так, как вы хотите. Обратите внимание, что вы пытаетесь отправить эти нажатия клавиш в приложение, и ОС обычно перехватывает их раньше. В случае 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 вниз, пока нажаты несколько других клавиш, приложите код для этих ключи в круглых скобках. Например, чтобы указать, чтобы удерживать SHIFT во время E и C, используйте "+ (EC)". Чтобы указать удерживать клавишу SHIFT во время E, а затем C без SHIFT, используйте "+ EC".

Обратите внимание, что, поскольку вы хотите одновременно нажать ESC и (скажем) E, вам нужно заключить их в скобки.

Ответ 2

Alt + F4 работает только в скобках

SendKeys.SendWait("(%{F4})");

Ответ 3

Загрузите InputSimulator из пакета nuget.

тогда напишите это:

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

в моем случае, чтобы создать новый рабочий стол Vertial, необходимо 3 ключа и код, подобный этому (windows key + ctrl + D):

        simu.Keyboard.ModifiedKeyStroke(new[] { VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL }, VirtualKeyCode.VK_D);

Ответ 4

SetForegroundWindow( /* window to gain focus */ );
SendKeys.SendWait("^{ESC}"); // ^{ESC} is code for ctrl + esc which mimics the windows key.