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

28

Я работаю над ярлыками в 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") но это не работает. Что я должен использовать вместо & quot; # & quot ;?

Благодарю.

Win + E, это просто образец. Представь, что мне понадобятся Win + R (Run) или Win + L. nuriaycan
Process.Start (& Quot; explorer.exe & Quot;); Hans Passant
Откомандирован. Это SendSystemKeys & quot; {Ctrl + Esc} & quot; Flot2011
Ключ Windows на самом деле эквивалентенCTRL + ESCты пробовал с этим? Matzi
Да, я пробовал это с .SendWait (& quot; ^ {ESC} "), но это тоже не работает. Есть ли неправильный код в этом синтаксисе? nuriaycan

Ваш Ответ

2   ответа
3

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

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

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

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

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

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


Old

Сохраняя это здесь для справки, он не будет работать во всех операционных системах и не всегда будет вести себя так, как вы хотите. Обратите внимание, что вы пытаетесь отправить эти нажатия клавиш в приложение, и ОС обычно перехватывает их раньше. В случае Windows 7 и Vista, слишком рано (доE отправлено).

SendWait("^({ESC}E)") или жеSend("^({ESC}E)")

Примечание отсюда:http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded nuriaycan

Похожие вопросы