ファイルの関連付けを作成したときに、エクスプローラーがプログラムをアクティブ化するために実行するコマンド ラインを指定しました。シェルはドキュメント ファイルの名前もコマンド ラインに出力するため、プログラムでコマンド ライン引数を確認してください。その方法は、言語と開発環境によって異なります。Delphi では、関数ParamCount
とParamStr
関数を使用します。
ファイルの関連付けを作成するときに、コマンド ラインでドキュメント ファイル名を配置する場所を正確に指定できます。%1
コマンドラインのどこかで使用すると、シェルはそれをファイル名に置き換えます。Windows のファイル名にはスペースが含まれることが多いため、ファイル名を引用符で囲む必要があります。そのため、ファイル関連付けのコマンド ラインは次のようになります。
ArthurApp.exe "%1"
その関連付けにより、別のドキュメント ファイルをダブルクリックすると、プログラムの別のインスタンスが起動します。既に実行中のインスタンスの別のウィンドウでドキュメントを開きたい場合は、起動時にプログラムが既に実行中のインスタンスを検索するようにコードを記述できます。見つかった場合は、そのインスタンスと通信して、開くファイルを伝えることができます。その通信には、メールスロット、ソケット、名前付きパイプ、メモリ マップ ファイル、DDE など、さまざまな方法で影響を与えることができます。
シェルのファイル関連付けメカニズムには、DDE を介して通信する方法が既に備わっているため、プログラムの 2 番目のインスタンスはまったく開始されません。代わりに、シェルは既に実行中のインスタンスとの DDE 通信を開始し、その方法で新しいファイル名を伝えます。ただし、最近では DDE が人気を失っているようです。そのため、最初に他のオプションをいくつか確認してください。
副次的な質問ですが、いいえ、内線番号は常に 3 文字の長さではありません。C コードは.cファイルに、Adobe Illustrator グラフィックスは.aiファイルに、新しい Microsoft Word ドキュメントは.docxファイルに格納されます。
しかし、注意してください。**.doc* を要求すると、結果には.docxファイルも含まれます。これFindFirstFile
は、短いファイル名と長いファイル名の両方に一致し、長いファイル拡張子を持つ長いファイル名には、短いファイル名のバージョンで 3 文字の拡張子があるためです。