java - 正在运行的 Java 应用程序可以从操作系统接收已注册的文件类型事件吗?

标签 java event-handling

我有一个 Java 应用程序,对于 Windows,通过 installanywhere 打包,对于 OSX,通过 jarbundler 分别打包成可双击的 .exe 和 .app。

我了解通过注册表(Windows)或 plist 文件(OSX)关联文件类型,这样双击注册的文件将打开我的应用程序和文件。当我的应用程序未运行时,这工作正常。

我的问题是关于我的应用程序已经运行的场景,我希望该实例接收并处理注册文件类型的后续双击事件,即在应用程序的同一实例中打开更多文档(例如您的浏览器。)

当前的行为是操作系统启动应用程序的新实例并在那里打开文档 - 不太理想。将我的问题视为每次双击 JPG 文件时都会打开 Photoshop 的新实例。

是否有一些关于如何将其集成到 Windows 和/或 OSX 的文档?

最佳答案

  1. 在某个端口上打开一个Socket;如果失败则转到3
  2. 如果连接成功,则发送当前打开的文件并退出
  3. 在同一端口上打开 ServerSocket 并监听连接(来自程序的后续实例)
  4. 建立连接后,接收文件名并在另一个选项卡中打开它

关于java - 正在运行的 Java 应用程序可以从操作系统接收已注册的文件类型事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641544/

相关文章:

javascript - 从 li a click 访问对 onclick 事件的引用

c# - c# 中的事件处理程序和应用程序生命周期对象——我应该取消 Hook 吗?

java - 如何将通用 bean 的属性绑定(bind)到动态创建的 swing 组件

java - 对话框仅第一个选项有效

java - 正则表达式替换为匹配的计数

ruby - Ruby 中的事件处理

python - python 游戏中的房间/屏幕/菜单 Controller 问题 : old rooms are not removed from memory

java - Action初始化的差异

java - 安卓 : Findviewbyid() returns null

java - JSP java 代码说 "javax.naming"在 <%!