2016-06-27 4 views
0

私は新しいです。C#他のプログラムが開かれているかどうかを検出する(ウイルス対策のような)

私は困惑的な質問から始めたいと思っていました。 システムを監視して、新しいプロセスの作成時期と終了時期を検出する方法を教えてください。

私はSystem.Diagnostics.Process.GetProcesses()を毎秒ポーリングする常時更新しているリストボックスに対して、これを行う方法についてはほとんど考えていません。

新しいプロセスが追加されたときにイベントを発生させるモニターと、プロセスが閉じられたときに起動する別個のイベントが必要です。

私は、ループまたはタイマーで実行されるプロセスモニタを探していません。私はプロセスリストへの直接のインターフェースが必要なので、このスレッド.NET Process Monitor 私の質問には答えません。 アイデア?

- 苛性ソーダ

+0

これを拡張すると、たとえば、プログラムが開かれたときや新しいプロセスが起動されたときに、NewProcessCreated(processID、processName、processPublisher)という名前のクラスがあるとします。 – CausticLasagne

+0

私のアプローチは、タイマーを使用していません、それはイベントに基づいています。これはあなたが欲しいものです。 – magicandre1981

答えて

0

私はRealtime Sessionを開始するには、TraceEventを使用すると、あなたがProcessStartProcessStop取扱いを見ることができ、ここであなたが処理するために、独自のコードを追加することができ、プロバイダのコードでMicrosoft-Windows-Kernel-Process

enter image description here

を活性化させますあなたがこのデータを入手したとき。

0

あなたは、特定のプロセスが実行されているかどうかを見つけるために、Process.GetProcessesByNameメソッド(String)を使用することができます。

System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcessesByName(sProcessName); 
    if (proc.Length > 0) 
    { 
     MessageBox.Show(String.Format("{0}is running!", sProcessName), sProcessName); 
    } 
    else 
    { 
     MessageBox.Show(String.Format("{0}is not running!", sProcessName), sProcessName); 

    } 
+0

私はOPが尋ねたことはかなりわかりません。 OPは、機会がある場合にそれをチェックするのではなく、常にプロセスを監視したい。 – Oliver

+0

タイマーイベントまたはストップウォッチクラスイベントを使用して、継続的に監視することができます – satsvelke

関連する問題