C#プログラムからJavaアプリケーションを制御しようとしています。プログラムはデータの入力を開始する前に、以前のデータ入力ウィンドウがあるかどうかを確認し、それらを閉じようとします。
ウィンドウが存在するかどうかを確認するためのコードは次のとおりです。
public static bool WindowExists(string WindowName)
{
IntPtr hWnd = FindWindow(null, WindowName);
return (hWnd != IntPtr.Zero);
}
これまでは、開いている入力ウィンドウがなくなるまで、このメソッドをwhileループ(ウィンドウにAlt + F4を送信)で使用していました。
しばらく前にJavaアプリケーションが更新され、このメソッドは機能しなくなりました。何らかの理由で、WindowExistsは、データ入力ウィンドウが閉じられた後でもtrueを返し続けます。これは、入力ウィンドウが少なくとも1回存在した場合にのみ発生します。
Thread.Sleep()をループに追加して、これがJavaアプリの遅延が原因ではないことを確認しようとしましたが、機能しませんでした。
WindowExistsを呼び出すだけで、入力ウィンドウがクラッシュすることがあります。
以前に動作したことがあり、他のプログラムでも動作するため、コードに問題はありません。したがって、Javaプログラムの更新に問題があるはずです。
ウィンドウが存在するかどうかを確認するための代替/より信頼性の高い方法はありますか?Alt + F4の送信を「ウィンドウを閉じるイベント」に変更することも試してみる価値があるかもしれませんが、このイベントを別のプログラムのウィンドウに送信する方法がわかりません。
私は初心者なので、答えは単純にしてください。
前もって感謝します。