【发布时间】:2014-10-21 17:39:05
【问题描述】:
我的目标是编写一个 java applet 应用程序,在客户端机器上的一个临时目录中写入一个 word 文档(该文档是从 DB 中获取的)并使用 Jacob 打开该文档。
通过 Jacob,我需要保留打开文档的句柄,以便在用户关闭文档后,我需要将其与更改一起保存回数据库。
也就是说,我想知道的第一件事是当用户关闭/退出 MS Word 文档时,如何通过 Jacob 捕获关闭/退出事件。我怎样才能做到这一点?
我尝试了下面的代码,它基于我在这个答案中看到的代码:https://stackoverflow.com/a/12332421/3813385 但它只打开文档并且不监听关闭事件...
package demo;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.DispatchEvents;
import com.jacob.com.Variant;
public class WordEventTest {
public static void main(String[] args) {
WordEventTest wordEventTest = new WordEventTest();
wordEventTest.execute();
}
public void execute() {
String strDir = "D:\\fabricasw\\workspace\\jacob\\WebContent\\docs\\";
String strInputDoc = strDir + "file_in.doc";
String pid = "Word.Application";
ActiveXComponent axc = new ActiveXComponent(pid);
axc.setProperty("Visible", new Variant(true));
Dispatch oDocuments = axc.getProperty("Documents").toDispatch();
Dispatch oDocument = Dispatch.call(oDocuments, "Open", strInputDoc).toDispatch();
WordEventHandler w = new WordEventHandler();
new DispatchEvents(oDocument, w);
}
public class WordEventHandler {
public void Close(Variant[] arguments) {
System.out.println("closed word document");
}
}
如果你们 发布一些说明如何操作的 java 代码,我将不胜感激。至少如何获取Microsoft Word文档的内容以及如何检测应用程序关闭事件。
【问题讨论】:
标签: java event-handling ms-word jacob