Weet iemand hoe je in Delphi een Int64, Large Integer, kunt omzetten naar een "gewoon" Integer type???????
Ik heb namelijk met de zgn. Performance Data Helper onder Win XP performance gegevens opgevraagd, maar ik krijg soms rare getallen, en ik denk dat dat ligt aan de Int64...
Ik heb de volgende code gebruikt:
Ik heb namelijk met de zgn. Performance Data Helper onder Win XP performance gegevens opgevraagd, maar ik krijg soms rare getallen, en ik denk dat dat ligt aan de Int64...
Ik heb de volgende code 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
| var PerfText:String;
UsageValue:Integer; //Hier komt de Performance Counter Value in te staan...
//UsageString staat het "path" naar de counters zoals bijv. '\Processor(_Total)\% Idle Time'.
procedure GetUsage(UsageString:String);
var
Query:HQUERY;
Counter:HCOUNTER;
CounterValue:TPdhFmtCounterValue;
PathBuffer:array[0..MAX_PATH+1] of Char;
begin
StrCopy(PathBuffer,PChar(UsageString));
// Initialize a new query
PdhOpenQuery(nil, 0, Query);
try
// Add the selected counter to the query
PdhAddCounter(Query, PathBuffer, 0, Counter);
// Tell PDH to collect the data
PdhCollectQueryData(Query);
// Get the countervalue in int64 format
PdhGetFormattedCounterValue(Counter, PDH_FMT_LARGE, nil, CounterValue);
// Display value
case CounterValue.CStatus of
PDH_CSTATUS_NEW_DATA: PerfText := 'New data: ' + IntToStr(CounterValue.LargeValue);
PDH_CSTATUS_VALID_DATA: PerfText := 'Valid data: ' + IntToStr(CounterValue.LargeValue);
else PerfText := 'Invalid data';
end;
UsageValue:=CounterValue.largeValue;
finally
// Always close the query when you're done with it. This will automatically
// close counter handle as well.
PdhCloseQuery(Query);
end;
end; |