2

(活动 - 其窗口位于前台的文件。)

我正在解决一个问题,即实时提取当前活动 pdf (.pdf)、word (.doc、.docx) 或记事本 (.txt) 文件中的文本。我已经尝试过 JNA,并获得了活动文件名(例如,a.pdf)和 exe 名称,但没有文件路径(例如,C:/Desktop/.../a.pdf。)我需要完整的文件路径在这里,因为一旦我知道它的路径,我就可以读取相应的文件并提取其中的文本。(我不需要 exe 路径,例如 C:/Program Files/adobe.exe。)

我检查了 JNA 的文档,但没有找到可以提供当前活动文件(不是 Java 应用程序)路径的方法。

或者,我认为也许某些包可以提供当前文件/图标的完整路径(例如,我在打开它之前单击 a.pdf,我的鼠标将专注于 a.pdf。)我尝试了 JNI,但仍然没有找到了这样的方法。

您能否就如何使用 Java 获取当前活动文件(不是 Java 应用程序)的路径或如何获取鼠标焦点中当前文件/图标的路径提供一些建议?

非常感谢!

4

1 回答 1

1

在 unix 上,您可以使用 lsof 命令获取进程打开的文件。我在 Windows 上搜索了一些类似的东西并想出了这个线程:

如何确定特定文件是否在 Windows 中打开?

相当于 lsof -p pid

是来自 sysinternals 句柄和 listdlls 的组合输出,即

处理 -p pid

listdlls -p pid

你可以用 sysinternals pslist 找出 pid

如果您不习惯 unix 术语,“pid”表示进程 ID,即标识每个进程的编号。找出 acrobat 的 pid,然后获取进程的句柄,您应该能够获取 acrobat 打开的所有文件。

免责声明:我是 Mac/Linux 用户,所以我没有尝试过上面的命令!

于 2012-05-30T03:16:33.967 回答