在我的Java程序中,我创建了Outlook.exe进程并发送带有预先填充内容的消息。发送消息或关闭消息窗口后,我需要知道用户是否发送了消息。
在Java代码中exitValue()
进程方法没有帮助,因为在这两种情况下exitValue
都是0。
我该怎么办?
ProcessBuilder processBuilder = new ProcessBuilder();
Process process = processBuilder.command("C:\\Program Files(x86)\\Microsoft Office\\Office15\\OUTLOOK.exe", "/a").start();
if (process.exitValue() == 0) {
Session session = sessionExtracting();
session.beginTransaction();
SQLQuery query = session.createSQLQuery("UPDATE mailorder set mailordstatus = 2");
query.executeUpdate();
session.close();
}
答案 0 :(得分:1)
不幸的是,这不是Microsoft应用程序的工作方式。启动命令并测试其返回代码在Unix世界中很常见。但在Windows中,预计自动化将使用Microsoft的特定自动化系统,如DDE(现在是旧版),COM / DCOM或.NET。最后两个允许控制程序创建知道如何管理应用程序的对象。在VisualBasic中使用COM或.NET是微不足道的,在C#(对于.NET)中很容易,在C ++中也是如此。 PowerShell还允许通过.NET接口控制应用程序。
所以这是您的选择: