como puedo poner en uso SendMessage
o PostMessage
que pulsar un botón en otra aplicaciónHaga clic en un botón en otra aplicación
Tengo un código de ejemplo para hacer esto consiguiendo identificador de ventana, pero no trabajar
también utilicé "WinDowse" para obtener la información requerida. aquí está el código
private const uint BM_CLICK = 0x00F5;
private const uint WM_LBUTTONDOWN = 0x0201;
private const uint WM_LBUTTONUP = 0x0202;
private void PushOKButton(IntPtr ptrWindow)
{
WindowHandle = FindWindow(null, "Form1");
if (ptrWindow == IntPtr.Zero)
return;
IntPtr ptrOKButton = FindWindowEx(ptrWindow, IntPtr.Zero, "Button", "&Yes");
if (ptrOKButton == IntPtr.Zero)
return;
SendMessage(ptrOKButton, WM_LBUTTONDOWN, 0, 0);
SendMessage(ptrOKButton, WM_LBUTTONUP, 0, 0);
SendMessage(ptrOKButton, BM_CLICK, 0, 0);
}
¿Existe una competencia Suloution en C#?
* "Tiene la idea general correcta." * - Bueno, no. La idea es tan equivocada como se pone. Los mensajes son solo la parte observable del procesamiento de entrada. Si reproduces solo esa parte, terminarás con un estado incoherente. La verdadera respuesta es [UI Automation] (https://msdn.microsoft.com/en-us/library/ms747327.aspx). – IInspectable
El marco de trabajo .NET UI Automation es limitado y causa una variedad de artefactos, como el hecho de que Adobe Reader solicite el modo de accesibilidad si incluso mira hacia los lados las ventanas que muestra. Hemos estado bloqueando muchas aplicaciones de Microsoft que intentan usar la Automatización de la interfaz de usuario debido a errores en las aplicaciones de destino donde la creación de control personalizado no ha cubierto adecuadamente el soporte de automatización. –
La IU Automatización se expone a través de objetos COM, que son fáciles de consumir desde .NET, en caso de que el soporte de biblioteca preconstruido no sea suficiente. Su comentario indica que respondió una pregunta diferente: * "Suponiendo que la automatización de la interfaz de usuario no funciona para nosotros, ¿cuáles son las alternativas?" * El OP nunca afirmó que la automatización de la interfaz de usuario no funcionaría para ellos, por lo que debe considerarse primero . Y si necesita falsificar información, realmente necesita hacerlo bien. Enviar mensajes no funcionará (consulte [Repetir entrada no es lo mismo que reprocesarlo] (https://blogs.msdn.microsoft.com/oldnewthing/20121206-00/?p=5903)). – IInspectable