Envoi de la clé Windows à L'aide de SendKeys

Je travaille sur les raccourcis en C#. Je réussis à implémenter Ctrl, Alt et Shift avec SendKeys.

Comme ceci:

Ctrl + C:

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

Ou Alt + F4:

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

Mais je ne peux pas envoyer "Windows Key" avec SendKeys. J'ai essayé ex: Gagner + E : .SendWait("#e") mais cela ne fonctionne pas. Que dois-je utiliser à la place de"#"?

Merci.

26
demandé sur Andrea 2012-04-28 22:03:09

2 réponses

OK s'avère que ce que vous voulez vraiment est ceci: http://inputsimulator.codeplex.com/

Qui a fait tout le travail d'exposer les méthodes Win32 SendInput à C#. Cela vous permet d'envoyer directement la clé windows. Ceci est testé et fonctionne:

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

Notez cependant que dans certains cas, vous souhaitez envoyer spécifiquement la clé à l'application (par exemple ALT+F4), auquel cas utilisez la méthode de bibliothèque Form. Dans d'autres, vous voulez l'envoyer au système d'exploitation dans général, utilisez ce qui précède.


Vieux -

En gardant ceci ici pour référence, cela ne fonctionnera pas dans tous les systèmes d'exploitation, et ne se comportera pas toujours comme vous le souhaitez. Notez que vous essayez d'envoyer ces touches à l'application, et le système d'exploitation les intercepte généralement tôt. Dans le cas de Windows 7 et Vista, trop tôt (avant l'envoi du E).

SendWait("^({ESC}E)") ou Send("^({ESC}E)")

Note d'ici: http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

Pour spécifier que toute combinaison de MAJ, CTRL et ALT doit être maintenue vers le bas alors que plusieurs autres touches sont pressées, joindre le code pour ceux touches entre parenthèses. Par exemple, pour spécifier de maintenir la touche MAJ enfoncée pendant E et C sont pressés, utilisez " + (EC)". Pour spécifier de maintenir la touche MAJ enfoncée pendant E est pressé, suivi de C sans Maj, utilisez "+ EC".

Notez que puisque vous voulez ESC et (disons) E pressé en même temps, vous devez les mettre entre parenthèses.

21
répondu yamen 2012-04-28 22:10:28

Alt + F4 fonctionne uniquement entre parenthèses

SendKeys.SendWait("(%{F4})");
1
répondu Oleg Gavril 2017-09-20 09:06:25