2009-03-12 19 views
1

解決したい問題があります。この状況があると思います。 notepad.exeのインスタンスが1つ実行されています。私は別のnotepad.exeを実行する。今私は後者を殺したい。どうしたらいいですか?プロセスIDを返す

私が最後のnotepad.exeのPIDを知ることができたなら、それを殺すことができました。しかし、最後に開かれたプログラムのPIDを取得する方法は?

もう1つの方法は、すべてのアプリケーションに一意のイメージ名を付けることです。私が学んだことから、イメージ名がバイナリファイルにハードコードされているので不可能に思えます。

だからアイデアはありますか?

P.S.すでに気づいたように、これはすべて窓にあります。

+0

あなたはメモ帳プロセスの開始を管理していますか? –

+0

はい、ありがとうございます。私は、実行中のプロセスを追跡し、これらの凍結のいずれかが起きた場合、そのプログラムが(必要であれば)殺して再起動するC++プログラムを作成しています。これらの監視プログラムはすべて同じイメージ名を持っています。 – dvim

+1

しかし、自分で起動してCreateProcessを使うと、dwProcessIdフィールドからPIDを知っていますか? –

答えて

1

;-pオフトピックかもしれWindowsはwhen the process was started(またはその "creation time")を追跡しているので、その情報を使用して最後に開始されたプロセスを見つけることができます。

0

さて、どのようにプロセスを起動していますか?たとえば、C#から起動する場合、static Process.StartメソッドはIdKill()メソッドを持つProcessインスタンスを返します。 (つまり、あなたが」didnのメカニズムは...アーキテクチャ/言語間

を異なりますそして、あなたは、コードを通してそれをやっていない場合、これらは誰か他の人のプロセスであれば、それは

関連する問題