私はWindowsソフトウェアを作成しました。私はこのプログラムにファイル拡張子を関連付けました。データファイルをダブルクリックすると、プログラムが起動し、ファイルが開きます。これまでのところ動作します。しかし、複数のファイルを選択し、コンテキストメニューで[開く]をクリックすると、プログラムのインスタンスが複数起動されます。私は、Windowsが自分のプログラムの1つのインスタンスですべてのファイルを開くようにします。私のプログラムにone-instance-handlerを実装しなければ、これは可能ですか?複数の関連ファイルをプログラムに渡すにはどうすればよいですか?
現在レジストリ内MyFileType/shell/open/command
は次のようになります。
"C:\Program Files\MyApp\MyApp.exe" "%1"
は、たぶん私はそれが動作を取得するために「%1」の代わりに使用する必要がありますいくつかの特別なトークン/変数はありますか? Linuxでは、1つのファイルには%f、ファイルのリストには%Fを使用する必要があります。 Windowsに似たものがありますか?
(これらのコメントには十分なスペースがないため、3つに分割しています):最初の段落:それを手に入れません。申し訳ありませんが、私はWindowsの開発者ではありません。私のアプリケーションはプラットフォームに依存せず、Javaで書かれています。コマンドライン引数として指定されたすべてのファイルを開くEXEファイルです。 SHCreateShellItemArrayFromDataObjetが何であるか、そしてJavaでどのようにこれを行うことができるか分かりません。そして、私が知る限り、すでにデフォルトのシェル動詞(この場合は "open")を使用しています。 – kayahr
2番目の段落:このOpenWithListを試しましたが、動作しません。ドキュメントには、同じファイルタイプの複数のアプリケーションを登録するための説明が書かれています。それは私が必要とするものではありません。私は既にファイルタイプにアプリケーションを関連づけています。私は、一度にファイルのリストを開くと、Windowsが自分のアプリケーションを複数回開くことを望んでいません。 – kayahr
第3段落:私はこの問題を避けたいと書きましたが、Windowsが本当にファイルリストをプログラムに渡すことができない場合は、このようにしなければなりません。 – kayahr