C # utilizando la función Sendkey para enviar una clave a otra aplicación

Deseo enviar una clave específica (por ejemplo, k) a otro progtwig llamado bloc de notas, y debajo está el código que utilicé:

void sendkey () { [DllImport ("User32.dll")] static extern int SetForegroundWindow(IntPtr point); Process p = Process.GetProcessesByName("notepad")[0]; IntPtr pointer = p.Handle; SetForegroundWindow(pointer); SendKeys.Send("k"); } 

Pero el código no funciona, ¿qué pasa con el código?

Editado: ¿Es posible que envíe la “K” al bloc de notas sin el bloc de notas para que sea la ventana activa? (por ejemplo, active window = “Google Chrome”, el bloc de notas está en el fondo, lo que significa enviar una clave a una aplicación en segundo plano)

    Si el bloc de notas ya está iniciado, debe escribir:

     // import the function in your class [DllImport ("User32.dll")] static extern int SetForegroundWindow(IntPtr point); //... Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if( p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); } 

    GetProcessesByName devuelve una matriz de procesos, por lo que debe obtener la primera (o encontrar la que desee).

    Si desea iniciar el notepad y enviar la clave, debe escribir:

     Process p = Process.Start("notepad.exe"); p.WaitForInputIdle(); IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); 

    La única situación en la que el código puede no funcionar es cuando el notepad se inicia como Administrador y su aplicación no.