Enviar la clave de Windows usando SendKeys

Estoy trabajando en atajos en C #. Logro implementar Ctrl, Alt y Shift con SendKeys.

Me gusta esto;

Ctrl + C :

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

o Alt + F4 :

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

Pero no puedo enviar “Clave de Windows” con SendKeys. Intenté ex: Win + E : .SendWait("#e") pero no está funcionando. ¿Qué debería usar en lugar de “#”?

Gracias.

OK resulta que lo que realmente quieres es esto: http://inputsimulator.codeplex.com/

Que ha hecho todo el trabajo duro de exponer los métodos de Win32 SendInput a C #. Esto le permite enviar directamente la clave de Windows. Esto está probado y funciona:

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

Sin embargo, tenga en cuenta que en algunos casos desea enviar específicamente la clave a la aplicación (como ALT+F4 ), en cuyo caso utilice el método de la biblioteca de Form . En otros, si desea enviarlo al sistema operativo en general, utilice lo anterior.


Antiguo

Manteniendo esto aquí como referencia, no funcionará en todos los sistemas operativos y no siempre se comportará como lo desee. Tenga en cuenta que está intentando enviar estos trazos de tecla a la aplicación, y el sistema operativo generalmente los intercepta temprano. En el caso de Windows 7 y Vista, demasiado pronto (antes de que se envíe el E ).

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

Nota desde aquí: http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

Para especificar que cualquier combinación de MAYÚS, CTRL y ALT debe mantenerse presionada mientras se presionan varias teclas más, encierre el código para esas teclas entre paréntesis. Por ejemplo, para especificar mantener presionado SHIFT mientras se presionan E y C, use “+ (EC)”. Para especificar mantener presionado SHIFT mientras se presiona E, seguido de C sin MAYÚS, use “+ EC”.

Tenga en cuenta que dado que desea ESC y (por ejemplo) E presionado al mismo tiempo, debe encerrarlos entre corchetes.

Alt + F4 funciona solo entre paréntesis

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