在我的程序中,我创建了Outlook.exe进程并发送带有预先填充的包含的消息。发送消息或关闭消息窗口后,我需要知道用户是否发送了消息。
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)
首先,Outlook是一个单例 - 如果outlook.exe已经运行,启动第二个实例只会将控制转移到第一个实例。其次,您正在对outlook.exe文件位置进行硬编码。
使用Outlook对象模型(使用COM桥接器) - 创建Outlook.Application
COM对象的实例,使用Application.CreateItem(0)
创建新消息,填充消息属性(主题,正文,收件人等) ,。)并调用MailItem.Send
或使用MailItem.Display
显示消息并捕获MailItem.Send
事件。