我正在嘗試創建一個C#.NET 2.0腳本來自動化以Java編寫的第三方應用程序中的工作流。等待第三方應用程序窗口加載
我使用user32.dll中的功能,以便能夠與Java應用程序窗口交互。
我的問題是,Java應用程序的窗口是緩慢的加載完全通過IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, UInt32 wParam, IntPtr lParam)
送我的行動有時會丟失。例如:在加載主窗口期間,如果我嘗試打開一個菜單(此時我實際上在主窗口上有一個句柄),我的消息就會丟失,菜單也不會打開。
我在Stack Overflow上發現了一些答案,告訴我們可以使用Process.WaitForInputIdle()
方法,但是我發現這隻適用於應用程序是單線程的,而不是我的Java應用程序的情況。 (C# SendKeys Wait for Program to Load before sending)
我在找工作的事同樣的想法,但是支持多線程或者您有任何其他的想法?!)
繼Mari9' 的想法,我終於用System.Diagnostic.PerformanceCounter()
觀看第三第三方應用程序處理活動然後它變爲0,這意味着該過程已經完成了它必須做的事情並且能夠執行我發送的消息。
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "% Processor Time";
PC.InstanceName = "<process name>";
Console.WriteLine(PC.NextValue().ToString());
刪除答案,因爲我沒有讀到你的問題的第二半:-( – Schwarzie2478