我正在尝试从我的 C# 程序控制 Java 应用程序。在程序开始输入数据之前,它会检查是否有任何可通过的数据输入窗口,并尝试关闭它们。
检查窗口是否存在的代码是:
public static bool WindowExists(string WindowName)
{
IntPtr hWnd = FindWindow(null, WindowName);
return (hWnd != IntPtr.Zero);
}
直到现在,我只是在一个while循环中使用了这个方法(向窗口发送Alt+F4),直到没有打开的输入窗口离开。
不久前,Java 应用程序得到了更新,这种方法不再有效。出于某种原因,WindowExists 一直返回 true,即使在数据输入窗口关闭之后也是如此。仅当输入窗口至少存在一次时才会发生这种情况。
我什至尝试将 Thread.Sleep() 添加到循环中,以确保这不是由 Java 应用程序中的一些延迟引起的,但它不起作用。
有时简单地调用 WindowExists 会使输入窗口崩溃。
代码没有问题,因为之前已经运行过,而且在其他程序中仍然可以运行,所以肯定是Java程序中的更新有问题。
是否有任何替代/更可靠的方法来检查窗口是否存在?将发送 Alt+F4 更改为“关闭窗口事件”可能也值得一试,但我不知道如何将此事件发送到另一个程序的窗口。
我是新手,所以请保持简单的答案。
提前致谢。