DOBON.NET DOBON.NETプログラミング掲示板過去ログ

アプリケーションの起動を検出

環境/言語:[WindowsXP,VB.NET2005]
分類:[.NET]


現在タスクマネージャのようなプロセス監視ツールを作成しています。

一定時間ごとにプロセス数の増減をチェックして、プロセス数に違いが発生した際にListViewにリスト表示するといった内容のものをとりあえず作ったのですが、

今後機能を拡張して、アプリケーションの起動を検出→ダイアログを表示→ユーザが許可した場合のみアプリを起動するといった感じ(Vistaのような)で作りたいと思いますが、そもそもそのような機能を.netで作成可能なんでしょうか?

可能な場合アプリケーション(.exe)、スクリプト(wsh,vbs等),コマンドプロンプトに対応できればと思っていますが、サンプルソース、もしくはこういうクラスで作成が可能等、ご教授いただけますでしょうか。

よろしくお願いいたします。
> 一定時間ごとにプロセス数の増減をチェックして、プロセス数に違いが発生した際にListViewにリスト表示するといった内容のものをとりあえず作ったのですが、
>
> 今後機能を拡張して、アプリケーションの起動を検出→ダイアログを表示→ユーザが許可した場合のみアプリを起動するといった感じ(Vistaのような)で作りたいと思いますが、そもそもそのような機能を.netで作成可能なんでしょうか?

  まず、WMIの、Win32_Process調べてみて下さい。
  監視ができます。
  http://lightbox.matrix.jp/ginpro/patio.cgi?mode=view&no=261&w=700

  次に起動時にダイアログを表示しユーザーが選択・・・は、100%拾う
  ことはできません。

  IShellExecuteHook で、拾えるもののみです。

※ デバッガーを作るレベルに達すれば、全てのプロセスの起動を拾って
  ユーザーが選択できるかもしれませんが・・・
  デバッガーの基本機能を有償販売しているところもありますので、ど
  うしても・・・と言うのであれば、そういうものの使用も検討されて
  は?ただし、ライセンス的にどうなるかは、解りません。
  要は不特定多数に配布が可能か否か・・・とか・・・

以上。参考まで・・・

さっそくのご返信および参考URLありがとうございます。

リアルタイムに新規プロセスを取得できるんですね。
サンプルソースが分かりやすかったので
参考になります。

もう一つのダイアログを表示して・・・のほうは、やはり簡単には作成できそうもないですね。ありがとうございます。

ちなみにご存知であれば教えていただきたいのですが
このManagementEventWatcherクラスでは新規にプロセスが起動した場合にイベントを補足することはできるようですが
プロセスが終了したときもイベントを補足することは可能なんでしょうか?
> ちなみにご存知であれば教えていただきたいのですが
> このManagementEventWatcherクラスでは新規にプロセスが起動した場合にイベントを補足することはできるようですが
> プロセスが終了したときもイベントを補足することは可能なんでしょうか?

  __InstanceCreationEventの部分を、__InstanceDeletionEvent
  にすれば、終了を監視できます。

以上。

度々のご回答ありがとうございます。
今までと比べよりリアルタイムにプロセスの起動、終了を補足することができ
おおむねイメージに近いものができました。

またご相談させていただくことがあるかと思いますが
そのときはよろしくお願いいたします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板