すべての実行中のアプリケーションには、起動した親アプリケーションがあります(ルートシステムプロセスを除く)。
アプリケーションを直接クリックして、それを実行しているユーザーであれば、それを知らせることはできません。
例:Explorerシェル(Internet Explorerではなく)を使用します。
任意のアプリケーションをダブルクリックして起動できます。親プロセスはexplorer.exeになります。
任意のファイルを右クリックすると、一連のコンテキストメニューエクステンダが読み込まれます。それらのうちのいくつかは、ビデオファイルのプレビューを作成するために外部アプリケーションを起動するかもしれません(私はこれを見ました、誓います)。親プロセスはexplorer.exeになりますが、ユーザーはアプリケーションを起動するために頼まれませんでした。彼はファイルのプロパティを表示したいだけです。彼は知りませんでした、そのアプリケーションが授与されました!
例:Total Commanderまたはアーカイブ用のプラグインをサポートする他の2パネルのファイルマネージャを使用します。
- アプリケーションをダブルクリックして起動することができます。親 プロセスはtotalcmd.exeになります。
- あなたは、アーカイブファイルを入力して、あなたの ドキュメントフォルダへ、そこから (抽出物)いくつかのファイルをコピーすることができます。対応する プラグインは、 自体で抽出を処理したり、すべての作業を処理する目に見えないプロセスを実行したりすることがあります。 Total Commanderの進捗バーは です。しかし、 新しいプロセスがあり、その親の はもう一度totalcmd.exeです。
例1と両方の例における2の間には違いがありません。
ところで、 "started by user"という定義は不明です。ユーザーの命令がなければ何も起こらないと言うかもしれません。ケース#2のすべてのバックグラウンドプロセスは、ユーザーが要求したために開始されました。まあ、ユーザーは明言を求めていませんでしたが、彼は操作自体を求めました。
返信用thnx ...意味があります:)しかし、 "parent"と呼ばれる別のアプリケーションを起動した "child"(いくつかのdelphiアプリ)と呼ばれる実行中のアプリケーションがあり、 "child"がシャットダウンしている場合「親」は「子」がシャットダウンしてから5秒後に「子」を開始しますが、そのような「親」があるかどうかを調べる方法はありませんか?私は本当にこれを説明する他の方法を知らない。 – doro