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})");