【问题标题】:listen for "open file with my java application" event on windows在 Windows 上侦听“使用我的 java 应用程序打开文件”事件
【发布时间】:2013-04-30 11:54:29
【问题描述】:

标题很混乱,但不知道如何用几句话来解释:

我有一个读取 *.example 文件的 java 应用程序。感谢install4j,我还添加了文件关联,因此当用户双击任何扩展名为 *.example 的文件时,我的应用程序就会启动

似乎 install4j 在args[] 中发送文件路径,因此打开该文件并在我的应用程序中显示它应该很容易。 但是如果应用已经在运行会发生什么?我只能允许应用程序的一个实例,我怎么知道用户正在打开一个文件?

我发现了这个:http://resources.ej-technologies.com/install4j/help/api/com/install4j/api/launcher/StartupNotification.html

但我仍然不明白我应该如何使用它以及我应该在我的应用程序中添加什么来监听这个事件。在哪里可以找到示例?

【问题讨论】:

  • 如果您无法通过 Install4J 找到解决方案,总有Java Web Startfile services demo. 展示了如何将其用于初始启动以及打开新文件的时间。

标签: java install4j file-association


【解决方案1】:

根据您链接到的文档,您似乎可以这样做:

StartupNotification.registerStartupListener(new StartupNotification.Listener() {
    public void startupPerformed(String parameters) {
        System.out.println("Startup performed with parameters " + parameters);
    }
});

由于startupPerformed 将被不同的线程调用,您需要确保处理这些通知的代码是线程安全的。

文档还说:

对于多个文件,文件用双引号括起来并用空格分隔。

所以你也需要自己解析参数字符串。

【讨论】:

  • 听起来不错,我明天会尝试并接受。谢谢@andrewdotn!
  • 它有效 =) 我已将 i4jruntime.jar 添加为我的项目的库,并在 main() 中使用了您的示例代码。该事件在应用程序运行并打开文件时触发,parameters var 包含文件的绝对路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多