2009-08-26 1 views
1

これは非常に一般的な質問です: 私はそれがアプリケーション(デルファイアプリケーションかjavaかどうかにかかわらずどんな種類のアプリケーションでも)がユーザーまたは別のアプリケーションによって起動されたかどうかを調べることができるかどうか疑問に思っていました?それが可能であれば、アプリケーションが別のアプリケーションによって呼び出されたことがわかった場合、新しいアプリケーションと呼ばれる「父」アプリケーションが何であるかを知ることができますか?アプリケーションは、ユーザーまたは別のアプリケーションによって開始されましたか?

Thnxです。

EDIT:あまりにも一般的です - どのようにDelphiアプリケーションにDelphi自体の親アプリケーションがあるかどうかを確認するにはどうすればいいですか? 1つのアプリケーションがサービスによって開始され、そのサービスを見つける必要がありますか?

答えて

2

すべての実行中のアプリケーションには、起動した親アプリケーションがあります(ルートシステムプロセスを除く)。

アプリケーションを直接クリックして、それを実行しているユーザーであれば、それを知らせることはできません。

例:Explorerシェル(Internet Explorerではなく)を使用します。

  1. 任意のアプリケーションをダブルクリックして起動できます。親プロセスはexplorer.exeになります。

  2. 任意のファイルを右クリックすると、一連のコンテキストメニューエクステンダが読み込まれます。それらのうちのいくつかは、ビデオファイルのプレビューを作成するために外部アプリケーションを起動するかもしれません(私はこれを見ました、誓います)。親プロセスはexplorer.exeになりますが、ユーザーはアプリケーションを起動するために頼まれませんでした。彼はファイルのプロパティを表示したいだけです。彼は知りませんでした、そのアプリケーションが授与されました!

例:Total Commanderまたはアーカイブ用のプラグインをサポートする他の2パネルのファイルマネージャを使用します。

  1. アプリケーションをダブルクリックして起動することができます。親 プロセスはtotalcmd.exeになります。
  2. あなたは、アーカイブファイルを入力して、あなたの ドキュメントフォルダへ、そこから (抽出物)いくつかのファイルをコピーすることができます。対応する プラグインは、 自体で抽出を処理したり、すべての作業を処理する目に見えないプロセスを実行したりすることがあります。 Total Commanderの進捗バーは です。しかし、 新しいプロセスがあり、その親の はもう一度totalcmd.exeです。

例1と両方の例における2の間には違いがありません。

ところで、 "started by user"という定義は不明です。ユーザーの命令がなければ何も起こらないと言うかもしれません。ケース#2のすべてのバックグラウンドプロセスは、ユーザーが要求したために開始されました。まあ、ユーザーは明言を求めていませんでしたが、彼は操作自体を求めました。

+0

返信用thnx ...意味があります:)しかし、 "parent"と呼ばれる別のアプリケーションを起動した "child"(いくつかのdelphiアプリ)と呼ばれる実行中のアプリケーションがあり、 "child"がシャットダウンしている場合「親」は「子」がシャットダウンしてから5秒後に「子」を開始しますが、そのような「親」があるかどうかを調べる方法はありませんか?私は本当にこれを説明する他の方法を知らない。 – doro

1

プログラムでこれを行うかどうか、または情報を表示するためのツールを探しているかどうかについては言及していません。

あなただけの情報を表示したい場合は、プロセスモニタ、SysInternalsのの一部を使用することができます:[ツール]メニューで

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

を、あなたのツリーを示して「プロセスツリー」ビューがあります親子プロセスの関係や各プロセスの所有者との関係を示します。

あなたがプロセスについて、さらに詳細が必要な場合は、プロセスエクスプローラを見て:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

+0

申し訳ありませんが、私はあなたが – doro

+0

...プログラムで探していましたか? –

+0

なぜ彼は、彼が使用している言語言及する必要がありますを使用している言語を言及する必要があり – Rick

1

親がexplorer.exeのになりますので、それは窓からユーザが開始した場合、それ以外の場合は親がしますプロセスを実行するアプリケーションである必要があります。 ツールチェックAnder Millerの返信を使用してプロセスの親をチェックします。

1

あなたがthis questionを見ましたか? 私は現在問題があるとは確信していません。

関連する問題