- PR -

VB6.0でプロセス毎のCPU使用率とメモリ使用量を取得したい

1
投稿者投稿内容
maurois
会議室デビュー日: 2004/03/06
投稿数: 13
投稿日時: 2004-07-01 00:13
システム全体のCPU使用率とメモリ使用量及びプロセスツリーを取得するWinAPIは用意されていますが、プロセス毎のCPU使用率とメモリ使用量を取得するWinAPIを見つけることができませんでした。

WMIを使用すれば、プロセス毎のCPU使用率とメモリ使用量を取得することができるようですが、WMIはドキュメントが少なく調査が困難です。

すみませんが、どなたか教えて下さい。

ちなみに目的は、テスト時にプロセス毎の負荷を計測することにあります。

ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-07-01 08:24
引用:

mauroisさんの書き込み (2004-07-01 00:13) より:

システム全体のCPU使用率とメモリ使用量及びプロセスツリーを取得するWinAPIは用意されていますが、プロセス毎のCPU使用率とメモリ使用量を取得するWinAPIを見つけることができませんでした。


Win32APIでは使ったことがありませんが…パフォーマンス モニタ APIは使えませんか?
常連さん
会議室デビュー日: 2003/11/05
投稿数: 31
投稿日時: 2004-07-01 15:40
'-------------------------------------------------------------------
'概要 :メモリの全物理容量と空き容量を取得する
'引数 :ServerIP ,string型 , IPアドレス
'戻値 :Int((ret - FreeRet) / ret * 100) ,INT型 ,メモリの使用量をパーセンテージで返す(%)
'説明 :メモリの使用率を計算してその値を返す(%)
'-------------------------------------------------------------------
Public Function fncMemory(ServerIP)

Dim CsSet As SWbemObjectSet
Dim Cs As SWbemObject
Dim LocatorM As SWbemLocator
Dim ServiceM As SWbemServices
Dim ret As Double
Dim FreeRet As Double: FreeRet = 0

On Error GoTo ErrHandle
Call CursolWait(frmTCSS024) 'カーソルを砂時計にする

Set LocatorM = New WbemScripting.SWbemLocator
Set ServiceM = LocatorM.ConnectServer(ServerIP, , AccountName, PassWord)
Set CsSet = ServiceM.ExecQuery("Select * From Win32_OperatingSystem")

'Sleep 3000
For Each Cs In CsSet

ret = Cs.TotalVisibleMemorySize
FreeRet = Cs.FreePhysicalMemory

Next

Set CsSet = Nothing
Set Cs = Nothing
Set ServiceM = Nothing
Set LocatorM = Nothing

fncMemory = Int((ret - FreeRet) / ret * 100)

Exit Function

ErrHandle:
' MsgBox "エラーが発生しました詳細はログファイルを参照ください", vbExclamation, "fncMemory"
Call cmLOG.CreateLogFile(cmSYSTEM.cmGetPCName, "TSCC024", "ERR", "fncMemory", "処理途中", "0", CStr(Err.Number), "0", Err.Description)

End Function

使えるか分かりませんがどうでしょうかね
1

スキルアップ/キャリアアップ(JOB@IT)