gpt4 book ai didi

java - 如何用Java打开一个word文档并等到用户结束编辑

转载 作者:行者123 更新时间:2023-11-29 04:38:21 26 4
gpt4 key购买 nike

在 Java 进程内部,可以执行以下操作:

  • 调用 Microsoft Word 打开文档
  • hibernate Java 进程,直到用户完成对文档的编辑
  • 当用户“关闭”Microsoft Word中的文档时,恢复Java进程并继续执行

我可以使用 DesktopProcess 类从 Java 打开 Microsoft Word,但我无法等到 Microsoft Words 关闭。当 Microsoft Word 启动时,我的 Java 进程总是继续处理。

是否可以在没有任何 COM 库的情况下执行此操作?

我做过的尝试:

1) 直接调用winword.exe

Process p = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE \""+FILEPATH+"\"");
p.waitFor();

但是,如果我在编辑打开的文档时打开另一个 Word 文档,则 winword.exe 不会关闭,因此,Java 进程不会继续执行并继续等待。此外,我必须知道 Microsoft Word 安装在哪里 - 这是个坏主意 -

2) 调用rundll32和fileprotocolhandler

Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+FILEPATH);
p.waitFor();
File file = new File(FILEPATH);
while(true){
try{
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
FileLock lock = channel.lock();
break;
}catch(Exception e){
Thread.sleep(3*1000);
}
}

打开后,我尝试锁定文件。如果我可以锁定文件,我想 Microsoft Word 已关闭。问题是有时此代码会在打开 Microsoft Word 之前锁定文件,p.waitFor() 无法正常工作。

3) 创建一个打开 Word 文档的 visual basic .exe,当它关闭时,.exe 完成

Process p = Runtime.getRuntime().exec("C:/openWordAndWaitClose.exe "+FILEPATH);
p.waitFor();

这很好用,但是......我不太喜欢它,因为有几种技术可以达到这个目的。在未来的更新中,我不知道它是否能正常工作。

最佳答案

您可以使用Process.waitFor() 方法

与启动 Microsoft Word 的进程对应

关于java - 如何用Java打开一个word文档并等到用户结束编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com