Javaで書かれたサードパーティアプリケーションでワークフローを自動化するC#.NET 2.0スクリプトを作成しようとしています。サードパーティのアプリケーションウィンドウが読み込まれるまで待つ
私はuser32.dll関数を使ってJavaアプリケーションウィンドウとやりとりできます。
私の問題は、Javaのアプリケーションウィンドウが完全にロードするのが遅いとIntPtr SendMessage(IntPtr hWnd, UInt32 Msg, UInt32 wParam, IntPtr lParam)
を介して送信され、私の行動が時々失われることです。例:メインウィンドウの読み込み中にメニューを開こうとすると(実際にはメインウィンドウにハンドルがあります)、メッセージが失われてメニューが開かない
私はその目的のために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