SendKeys.Send y clave de Windows

Estoy intentando hacer que un disparador de teclado para mi aplicación WinForm invoque el atajo de tecla de Windows + # (# = una tecla numérica) que inicia una nueva instancia de la aplicación en la enésima ranura en la barra de tareas.

Por ejemplo, me gustaría ejecutar Photoshop, que está en el primer espacio de mi barra de tareas.

WinKey+1 

He oído hablar de la alternativa CTRL + ESC, pero el código siguiente no funciona.

 SendKeys.Send("^{ESC}1") 

¿Alguna otra alternativa? ¿Necesito ejecutar un archivo por lotes para esto?

¡Gracias! 🙂

CTRL+ESC no simula la tecla WIN , simplemente llama al menú de inicio.

Un poco de P / Invoke siempre hace felices a todos:

 using System.Runtime.InteropServices; using System.Windows.Forms; static class KeyboardSend { [DllImport("user32.dll")] private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); private const int KEYEVENTF_EXTENDEDKEY = 1; private const int KEYEVENTF_KEYUP = 2; public static void KeyDown(Keys vKey) { keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0); } public static void KeyUp(Keys vKey) { keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } 

Y lo llamas de esta manera:

 KeyboardSend.KeyDown(Keys.LWin); KeyboardSend.KeyDown(Keys.D4); KeyboardSend.KeyUp(Keys.LWin); KeyboardSend.KeyUp(Keys.D4); 

Probado, funciona ¡Que te diviertas!