OSに登録されているファイルの関連付けを利用したいクロスプラットフォームのSwingベースのアプリケーションを作成中です。
これで、ファイルをクリックしてアプリが読み込まれるようになりましたが、知っておく必要があるのは、アプリケーションを起動したファイルがどこにあるかをアプリケーションに認識させ、コンテンツをクエリする方法です。
ファイルの関連付けの登録に関して、さらに何か関係がありますか?または、Javaは私のためにこれを行うことができますか?
OSに登録されているファイルの関連付けを利用したいクロスプラットフォームのSwingベースのアプリケーションを作成中です。
これで、ファイルをクリックしてアプリが読み込まれるようになりましたが、知っておく必要があるのは、アプリケーションを起動したファイルがどこにあるかをアプリケーションに認識させ、コンテンツをクエリする方法です。
ファイルの関連付けの登録に関して、さらに何か関係がありますか?または、Javaは私のためにこれを行うことができますか?
私は前向きではありませんが、ファイルクリックで処理しているファイルの名前がmain()
メソッドの引数に含まれることを期待しています。あなたはそれを試し/チェックしましたか?
これがWindowsの場合(指定しなかった場合):
レジストリで、登録されているファイルタイプのアプリケーションパスを指定した場所で、に追加し"%1"
ます。これは、クリックされたファイルのパスをWindowsが入力する特別なパラメーターです。したがって、レジストリエントリは次のようになります。c:\path\to\app.exe "%1"
これを行う1つの方法は、ファイルの関連付けでスクリプトまたはバッチファイルを介してJavaアプリを実行し、バッチファイルでファイルのパス名をコマンドライン引数、環境変数、またはJavaプロパティとして渡すことです。
拡張機能はアプリケーションにリンクでき、インストール中にレジストリキーを設定できます。必要なキーはここに記載されています:
http://support.microsoft.com/?scid=kb%3Ben-us%3B185453&x=6&y=11
Javaからは、Windowsレジストリに直接アクセスすることはできません。ランタイムを使用すると、そのようなことを行うことができます http://www.rgagnon.com/javadetails/java-0480.html
Windowsには、assocとftypeの2つのコマンドがあり、レジストリを操作するために汚れた洗濯をする必要はありません。たとえば、java.lang.Processを使用してコマンドを呼び出します。http://www.rgagnon.com/javadetails/java-0592.html