如何确定用户是否发送了从Java代码构建的MS Outlook消息?

时间:2017-03-07 16:59:03

标签: java

在我的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();
}

1 个答案:

答案 0 :(得分:1)

不幸的是,这不是Microsoft应用程序的工作方式。启动命令并测试其返回代码在Unix世界中很常见。但在Windows中,预计自动化将使用Microsoft的特定自动化系统,如DDE(现在是旧版),COM / DCOM或.NET。最后两个允许控制程序创建知道如何管理应用程序的对象。在VisualBasic中使用COM或.NET是微不足道的,在C#(对于.NET)中很容易,在C ++中也是如此。 PowerShell还允许通过.NET接口控制应用程序。

所以这是您的选择:

  • 使用Microsoft语言或PowerShell脚本创建程序,通过Outlook 发送邮件并设置返回代码,并从Java启动代理程序
  • 构建一个使用.NET桥来控制Outlook的类。 Google告诉我,有JNBridge等商业解决方案或jni4net等免费解决方案 - 免责声明,我从未使用过......