我有一个在Windows服务器上运行的Java进程,我必须启动命令行exe。我正在使用
Process p = Runtime.getRuntime().exec(command);
OutputStream stdin = p.getOutputStream();
InputStreamstderr = p.getErrorStream();
InputStream stdout = p.getInputStream();
运行流程并捕获标准输入/输出流。我遇到的问题是我必须运行的exe之一将抛出一个弹出消息框,需要点击“Ok”才能完成失败。
我的Java程序在后台运行,因此它没有弹出消息框的窗口,这意味着当Java程序的exe错误将挂起,直到某人注意到它并在任务管理器中将其杀死。
有没有办法能够从Java中捕获或检测这些弹出框?
答案 0 :(得分:1)
然后拨打PostMessage并发送BM_CLICK
“点击”它你可能希望有一个独立的观察者线程来完成所有这些,因为你的程序等待进程结束或继续。
抱歉,我的回答非常粗糙。晚餐优先。
答案 1 :(得分:0)
没有。这只是一个正在运行的过程。
产生任何提出GUI或任何其他无法通过stdin / out控制的控制方法的东西都没有意义。
答案 2 :(得分:0)
不,不是我直接说的。但是,您可以执行某种形式的异步通知。例如,您可以将特定应用程序发布到您的应用程序可以订阅的JSM队列中的主题。如果您没有选择转到JMS路由,则可以使用基于文件通知的触发器。您可以让另一个应用程序在公共目录中创建一个虚拟文件,您可以让您的应用程序监视该目录。
底线是我认为你不能从你进程中的另一个进程捕获弹出窗口。因此,您需要执行某种形式的外部/异步处理来捕获它。
答案 3 :(得分:0)
一个不优雅但简单的解决方案就是超时。