应用程序如何在启动时检测到它启动的原因?

时间:2016-06-19 16:33:55

标签: java javafx

我使用javafx创建了一个用于浏览和编辑图像的ImageViewer。此appn提供一个打开的菜单来选择要浏览的图像文件。我将.jar文件转换为.exe文件。在一个图像文件的属性中,我更改了选项"打开"以便默认情况下使用此ImageViewer打开图像。但是,当我双击图像时,appn ImageViewer启动并且没有任何东西,因为没有编码这样的东西。查看图像的唯一方法是使用"打开菜单"。但我想要点击图像的功能,appn ImageViewer启动并显示图像。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

回答你的问题:是的,有一种方法可以做到这一点,因为我们知道其他应用程序可以做到这一点 - 我们只需要确定它是什么。

我以前做过类似的事情,所以请允许我引导你思考如何找到答案然后我认为它会很清楚。

考虑问题 - 您有一个操作系统尝试与应用程序通信,以便它会告诉应用程序打开哪个文件。从逻辑上讲,我们必须得出结论,系统必须向应用程序发送该文件的路径。

现在,沟通将如何进行?让我们考虑设置默认程序 - 那里有任何限制,或者你可以要求任何程序打开任何类型的文件?如果你试验一下,你会发现没有任何限制 - 你可以要求任何程序打开任何文件(不是说它能正常工作,但可以做到)。那告诉我们什么呢?这意味着系统不知道哪些程序是"正确的"那些打开文件,这表明没有注册机制你必须对系统说'嘿,我可以打开这种文件"。

因此,如果任何程序可以打开任何文件并且系统没有维护可以打开文件的程序注册表,您认为它会如何与程序通信以传达它应该打开的文件路径?好吧,最简单最通用的方式似乎是命令行参数。这样,所有系统都会调用应用程序并传递包含文件路径的参数。

定义主要方法时:public static void main(String[] args){...}" args"参数是命令行参数传递给程序的位置。如果您编写一些日志语句和/或System.out语句来转储args的内容,我打赌您会发现文件路径正在以这种方式传递。

一旦确认可以通过args获取文件路径,那么您只需编写文件读取逻辑,即使用系统传入的参数来查找和读取文件内容。