Roddyが示唆しているように、パラメータスイッチが唯一の信頼できる解決策だと思います。ただし、ユーザーが独自のショートカットを作成する場合、これはニーズに合わない可能性があることに注意してください。
つまり、ユーザーがコマンドラインに「ドキュメント」を含むショートカットを作成した場合、それをコマンドライン呼び出しまたは「ダブルクリック」として処理しますか。私の推測では、後者です。
前者の場合は、ここで読むのをやめることができます。:)
しかし、後者の場合は、必要な動作を(より)確実に取得するために、もう少し作業を加える必要があるかもしれません。
これには、ダブルクリック起動ではなくコマンドラインスイッチを使用してコマンドライン起動を示す必要があります。これは、ダブルクリックを「効果的に」実行する方法は複数ありますが、コマンドラインから何かを実行する方法は1つだけです。つまり、コマンドライン!(ちなみに、スタートメニュー->実行...はコマンドライン起動だと思います。ymmv)
したがって、私であれば、アプリケーション用のコマンドライン固有のランチャーを作成します。コマンドラインランチャーは、実際には、実際のアプリケーション実行可能ファイルを呼び出す前に、指定されたコマンドラインを取得し、追加のパラメーターを追加するだけの非常に単純なコードです。
例えば
myapp param1 param2
これは、ShellExecuteを効果的に呼び出すだけです。
myappgui param1 param2 / cmd
GUIを介して呼び出すときに、ユーザーが「実際の」アプリを表すexeの実際の名前にあまり関心がないため、私自身は2つの実行可能ファイルを使用することにあまり関心がありません。 、または名前を知る必要があります。ファイルタイプの関連付けやショートカットなどはすべて、myapp.exeではなく、「実際の」myappgui.exeを直接指しているだけです。
また、コマンドラインリファレンスは、myapp.exeを使用してコマンドラインからアプリを呼び出すようにユーザーに指示するだけです。
アプリケーションで、コマンドラインスイッチが見つかった場合は、コマンドラインランチャーアプリケーションを介して起動されたことがわかります。それ以外の場合は、ダブルクリック/GUI起動である必要があります。
ユーザーの大多数に関する限り、2つのexeが関係していることを知る必要さえないかもしれません。いずれにせよ、ユーザーがあなたのテクニックを発見した場合(どちらを選択しても)、コマンドラインを作成してユーザーが望む目的を達成することでそれをスプーフィングできることを受け入れる必要があります。
それがあなたにとって重要である場合、コマンドラインランチャーのアプローチはおそらく彼らがメカニズムを発見する可能性を少し低くします-2つの実行可能ファイルがあることを知っているだけでは十分ではありません-彼らはまたあなたのコマンドラインのコマンドラインスイッチを知る必要がありますランチャーは追加します-コマンドラインランチャーmyapp.exeを使用せずに、コマンドラインから直接myappgui.exeを使用した場合でも、GUIから起動されたかのように応答します。
一方、GUIの起動を示すためにスイッチを使用するには、必要なスイッチを「パブリックビュー」に配置する必要があります。