获取与文件关联的应用程序 Java

huangapple go评论79阅读模式
英文:

Get application associated with a file java

问题

我正在尝试获取文件的关联程序,例如,如果我有一个文件 C:/foo/bar.example,我想知道是什么程序打开了 .example 文件(有点类似 Notepad.exe 打开 .txt 文件)。

我尝试创建一个进程来打开该文件,使用的命令是 runtime.exec("rundll32 url.dll,FileProtocolHandler C:/foo/bar.example"),但是无法通过 Process 获取关联的应用程序。

这个示例展示了我在 Windows 中试图实现的内容,虽然我希望能够跨平台实现。

英文:

I am trying to get the associated program of a file, for example
if I have a file C:/foo/bar.example I want to get what program
opens .example (Kind of like Notepad.exe opens .txt Files).

I tried creating a process to open that file using runtime.exec("rundll32 url.dll,FileProtocolHandler C:/foo/bar.example")
but there is no way to get the associated application using Process.

This example shows what I am trying to achieve in Windows, although I want something cross platform.

答案1

得分: 2

我不认为仅使用纯粹的Java就能实现这一点。

我目前想到的唯一方法(使用Java)是使用JNA来直接与Win32 API进行接口交互(请注意,这是用C而不是Java编写的)。查看此答案以了解如何实现Win32 API部分,以及此链接以了解如何使用JNA。

英文:

I do not think that this is possible just using pure Java.

The only way that comes to my mind right now (using Java) is to use JNA to directly interface with the Win32-API (note that this is written in C and not Java). See this answer for how to achieve the Win32-API-part and this link for how to use JNA.

huangapple
  • 本文由 发表于 2020年8月24日 21:49:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/63562389.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定