13

ShellExecuteを使用してDelphiXE2の別のアプリケーション「one.exe」からEXE「two.exe」を実行しようとしています。

ShellExecute(0, 'open', 'two.exe', nil, nil, SW_NORMAL);

完全に機能しますが、タスクマネージャーの[プロセス]タブから[プロセスツリーの終了]オプションを使用してアプリケーション'one.exe'(親アプリ)を終了すると、アプリケーション'two.exe'も終了します。

ShellExecutedアプリケーションがこのように終了するのを防ぐにはどうすればよいですか?

4

2 に答える 2

11

わかりました、あまり良い解決策ではありません...しかし成功してテストされました; o)

ShellExecute(0, 'open', 'cmd', 
  PChar('/C  start "" "' + Application.ExeName + '"'), nil, SW_HIDE);

ここに画像の説明を入力してください

最初のものは手動で起動されます...通常のshellexecute呼び出しで彼の子供...最後のものはshellexecute + cmdトリックで...

/Cの説明

于 2012-05-15T17:41:19.487 に答える
9

私はあなたが順番にスポーンする中間プロセスを作成する必要があると思いますtwo.exe。次に、中間プロセスをすぐに終了する必要があります。その時点で、元のプロセスとの関係two.exeが壊れます。

于 2012-05-15T17:19:14.833 に答える