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

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

Как это;

Ctrl + C:

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

или Alt + F4:

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

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

Благодарю.

5 ответов

Решение

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

Который проделал всю тяжелую работу разоблачения Win32 SendInput методы на C#. Это позволяет вам напрямую отправить ключ 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 при одновременном нажатии необходимо заключить их в скобки.

Загрузите 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);

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

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

Для отправки комбинации Ctrl+Alt+Right ==> используйте это ==> "(^%({RIGHT}))"

Другие вопросы по тегам