プロセス数、スレッド数の取得方法

解決


夏みかん  2007-07-11 00:12:08  No: 65643

現在、ちょっとしたシステムモニターを作っているものです。
それでタスクマネージャの CPU 使用率、PF 使用量などは
表示できました。でも、PF 使用量の下に表示されるハンドル数、
スレッド数、プロセス数の取得方法が分かりません。
そこでご存知の方がいましたら教えて欲しいのです。

環境は Windows XP Home SP2、VC++2003、SDK(非MFC) となっています。
よってプロセス数やスレッド数の数を取得する API 関数はあるのか、
どんな API 関数を利用するかだけでも良いのでお願い致します。
それではお待ちしています。

ちなみにネット検索すると「マルチスレッド」の項目が多くてスレッド数の
数だけを数えたい、あるいはスマートに取得する方法を探しています。
あと今後のために「プロセス関連」の情報収集するにはどんな API 関数を
利用すれば良いかもアドバイスできる方は私にも教えて下さい。
お願いします。


シャノン  2007-07-11 02:02:15  No: 65644

CreateToolhelp32Snapshot
Process32First / Next
Thread32First / Next
が使えるでしょう。

他にも、パフォーマンスカウンタとか WMI でも取得できると思います。


どら  2007-07-11 02:11:45  No: 65645

WMIからですと、

   プロセス   :Win32_Process
   スレッド   :Win32_Thread

で取得できるかと。

WMI Query Analizer
  http://www.showg.net/monozukuri/WMIQueryAnalyzer/index.htm
とかでまずはスレッドやプロセスをWMIから拾ってみて、必要な情報が取得
できているかを確認してみてから、WMIが使えるか判断すると良いと思いま
す。


夏みかん  2007-07-11 08:46:10  No: 65646

シャノンさん、どらさんへ。
API 関数名の情報をありがとうございました。

「CreateToolhelp32Snapshot」キーワードを頼りに検索して
次のリンク先を参考にする事になりました。
  http://nienie.com/~masapico/api_CreateToolhelp32Snapshot.html
  http://www.geocities.jp/i96815/windows/win07.html
  http://www.geocities.jp/winapi_database2/special/2002_2/index.html
  http://madia.world.coocan.jp/delphi/Win32API/Process.htm
これらの情報を元に作成して行こうと思いますが、作成するにあたって
注意すべき点などありましたらアドバイスをお願いします。
また、上記以外で参考にした方が良いと思われるWebページがありましたら
紹介して下さい。ほぼ解決ですがしばらくこのままにしておきます。
それではまた。


夏みかん  2007-07-13 16:59:23  No: 65647

解決にチェックします。
それではまた。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加