在Windows上监听“使用我的Java应用程序打开文件”事件

7

标题很困惑,但我不知道如何用几句话解释:

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

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

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

但是我仍然不明白应该如何使用它以及应该添加什么内容来监听此事件。 我在哪里可以找到示例?


如果您无法通过Install4J找到解决方案,总有Java Web Start可供选择。文件服务演示展示了如何在初始启动时以及打开新文件时使用它。 - Andrew Thompson
1个回答

4
根据你提供的文档,看起来你可以这样做:
StartupNotification.registerStartupListener(new StartupNotification.Listener() {
    public void startupPerformed(String parameters) {
        System.out.println("Startup performed with parameters " + parameters);
    }
});

因为 startupPerformed 将会被不同的线程调用,所以你需要确保处理这些通知的代码是线程安全的。

文档还说:

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

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


听起来不错,我明天会尝试并接受。谢谢@andrewdotn!! - Salvatorelab
1
它可以工作 =) 我已将 i4jruntime.jar 添加为我的项目库,并在 main() 中使用了您的示例代码。当应用程序正在运行并且您打开文件时,事件会被触发,parameters 变量包含文件的绝对路径。 - Salvatorelab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接