net - C#usando la función Sendkey para enviar una clave a otra aplicación
enviar pdf por correo c# (1)
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 serie de procesos, por lo que debe obtener el primero (o encontrar el 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.
Quiero enviar una clave específica (por ejemplo, k) a otro programa llamado bloc de notas, y debajo está el código que usé:
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é hay de malo con el código?
Editado: ¿Es posible que envíe la "K" al bloc de notas sin que el bloc de notas sea la ventana activa? (por ejemplo, ventana activa = "Google Chrome", el bloc de notas está en el fondo, lo que significa enviar una clave a una aplicación en segundo plano)