2011-11-29 11 views
3

アプリケーションがユーザーによって起動されたかどうかを確認するにはどうすればよいですか?たとえば、Exeがダブルクリックされた場合、またはエクスプローラから[開く]を右クリックします。私のアプリケーションはどのように起動しましたか?

function AppWasExecutedByUser: Boolean; 
begin 
    // 
end; 

procedure TForm1.OnCreate(Sender: TObject); 
begin 
    if AppWasExecutedByUser then 
    ShowMessage('User opened the exe by double clicking in Windows') 
    else 
    ShowMessage('Application was opened some other way'); 
end; 

はあなたの考えに感謝:

は、私のような上記の、何かを決定するための機能を必要としています。

ありがとうございました。

+3

なぜこれが必要ですか?これは珍しい要求です。ほとんどのアプリは、どのように起動されたかを気にする必要はありません。 –

答えて

4

アプリケーションにファイル拡張子を関連付けた場合は、paramcount=1にすることができ、開かれたファイルはparamstr(1)で読むことができます。

アプリケーション自体を開くと、ダブルクリックまたは実行ファイルの[開く]は同じ効果があります:paramcount=0。実際、Windowsエクスプローラは同じパラメータでShellApiを呼び出しています。したがって、それを特定する方法はありません。

paramstr(0)には、常に両方の場合に完全な実行可能パスが含まれます。

ショートカットリンクを作成してパラメータを追加しても、ダブルクリックまたは右クリック+開くの結果が同じになります。

5

これを実行する唯一の方法は、アプリにコマンドラインパラメータを渡すショートカットからアプリを起動させることです。単にファイルを直接クリックするだけでパラメータは渡されません。

関連する問題