Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用Runtime.exec()后检测图形界面_Java_Runtime - Fatal编程技术网

Java 调用Runtime.exec()后检测图形界面

Java 调用Runtime.exec()后检测图形界面,java,runtime,Java,Runtime,我正在尝试与遗留系统集成。旧系统使用对话框窗口报告错误。除了对话框窗口外,它根本没有返回代码。我使用Runtime.exec()启动遗留系统 有没有办法检测执行的程序是否产生了对话框窗口或任何其他图形界面?此解决方案在Windows中完成,执行的程序是exe。如果旧系统在控制台中报告错误,则可能会得到错误。 只需获取错误的输入流并进行阅读 像这样: Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(cmd); // any err

我正在尝试与遗留系统集成。旧系统使用对话框窗口报告错误。除了对话框窗口外,它根本没有返回代码。我使用
Runtime.exec()
启动遗留系统


有没有办法检测执行的程序是否产生了对话框窗口或任何其他图形界面?此解决方案在Windows中完成,执行的程序是exe。

如果旧系统在控制台中报告错误,则可能会得到错误。
只需获取错误的输入流并进行阅读

像这样:

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
// any error message?
InputStream error = proc.getErrorStream(); 
InputStreamReader isr = new InputStreamReader(error);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
      System.out.println(" ERROR >" + line); 
我建议阅读:

希望获得此帮助。

您可以使用此功能轮询进程启动的windows


好了,您只能从使用Java process API的进程中获取标准和错误输出流。

因此,我所做的解决方案是使用@Gerrett Hall链接的代码片段。这段代码在我运行命令并保存名称之前检查活动窗口

然后,如果命令未返回,则检查活动窗口是否已更改。如果有,则终止进程(可选发送一个全局返回键)

为了从对话框中获取信息,我可以使用Ctrl+C复制对话框的内容,并读取粘贴缓冲区将消息复制到日志中。我还没弄明白那部分


是的,这是一个丑陋的黑客行为,但遗留系统也是如此。

我担心这不起作用。正如我所说,它只与图形窗口交互。斯特德尔上什么也没有。