De laatste tijd ben ik aan het uitzoeken hoe je systeem performance gegevens (zoals CPU-, geheugen-, Netwerk-gebruik) kunt opvragen in Windows NT/2000/XP.
Van de Win32 API Help heb ik begrepen dat dat kan met de zogenaamde PDH functies (Performance Data Helper).
Ik weet ongeveer welke functies ik moet gebruiken, maar de waarden die ik moet invullen voor de variabele "FullCounterPath" (zie code hieronder) is mij nog volstrekt onduidelijk...
Kan mij misschien iemand hiermee helpen??????
Of misschien weet iemand een andere oplossing om de performance gegevens makkelijk op te vragen (misschien weet iemand een handige unit
N.B. ik werk niet met Delphi comps, maar met "raw" API functies... )
Ik het de volgende code in Delphi 6 Personal Edition gebruikt:
Thanx 4 helping
Van de Win32 API Help heb ik begrepen dat dat kan met de zogenaamde PDH functies (Performance Data Helper).
Ik weet ongeveer welke functies ik moet gebruiken, maar de waarden die ik moet invullen voor de variabele "FullCounterPath" (zie code hieronder) is mij nog volstrekt onduidelijk...
Kan mij misschien iemand hiermee helpen??????
Of misschien weet iemand een andere oplossing om de performance gegevens makkelijk op te vragen (misschien weet iemand een handige unit
Ik het de volgende code in Delphi 6 Personal Edition gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| //Globale Varibalen
var
CurrentRawData:Cardinal;
PreviouseRawData:Cardinal;
NetworkUsage:Integer;
//Procedure GetNetworkUsage
procedure GetNetworkUsage;
var UserData:Cardinal;
Query:THandle;
FullCounterPath:PChar;
Counter:THandle;
Format:DWORD;
ValueType:DWORD;
ValueCounter:Double;
begin
//Creating Query
UserData:=10;
PdhOpenQuery(nil,UserData,Query);
//Add Counter
FullCounterPath:=PChar(''); //Hier weet ik dus niet wat ik moet invullen...
PhdAddCounter(Query,FullCounterPath,UserData,Counter);
//Collecting Data
PhdCollectQueryData(Query);
//Get Counter Data
Format:=PDH_FMT_DOUBLE;
PdhGetFormattedCounterValue(Counter,Format,ValueType,ValueCounter);
PreviousRawData:=CurrentRawData;
CurrentRawData:=ValueCounter;
PdhCalculateCounterFromRawValue(Counter,Format,PreviousRawData,CurrentRawData,NetworkUsage);
//Remove Counter
PhdRemoveCounter(Counter);
//Close Query
PhdCloseQuery(Query);
end; |
Thanx 4 helping