Estoy intentando crear un script C# .NET 2.0 para automatizar un flujo de trabajo en una aplicación de terceros escrita en Java.Esperar a que se cargue la ventana de la aplicación de un tercero
Estoy usando las funciones user32.dll para poder interactuar con las ventanas de la aplicación Java.
Mi problema es que las ventanas de la aplicación Java tardan en cargarse completamente y mi acción enviada a través de IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, UInt32 wParam, IntPtr lParam)
a veces se pierde. Ejemplo: durante la carga de la ventana principal, si trato de abrir un menú (en este momento tengo un control en la ventana principal), mi mensaje simplemente se pierde y el menú nunca se abre.
Encontré algunas respuestas en Stack Overflow diciendo que podíamos usar el método Process.WaitForInputIdle()
para tal fin, pero descubrí que esto solo funciona si la aplicación es de un solo subproceso, que no es el caso de mi aplicación Java. (C# SendKeys Wait for Program to Load before sending)
estoy en busca de algo de trabajo de la misma idea, pero que soporta multi-hilo o cualquier otra idea que podría tener:?!)
siguiente idea del Mari9' finalmente he utilizado la System.Diagnostic.PerformanceCounter()
para ver el tercer actividad de proceso de la aplicación del partido Luego commite a 0, significa que el proceso ha hecho lo que tenía que hacer y es capaz de ejecutar el mensaje que le envío.
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "% Processor Time";
PC.InstanceName = "<process name>";
Console.WriteLine(PC.NextValue().ToString());
eliminé la respuesta porque no leí la segunda mitad de su pregunta :-( – Schwarzie2478