Отправка ключа 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}))"