Ich verwende folgende function, die Luckie in seinem InternetMonitor verwendet:
Delphi-Quellcode:
function Tform1.GetSessionTraffic(Way : string) : real;
var
IfTable: PMIB_IFTABLE;
dwSize: Cardinal;
i: Integer;
begin
result := 0;
IfTable := nil;
dwSize := 0;
ZeroMemory(@IfTable, sizeof(IfTable));
try
VVGetIfTable(IfTable, dwSize, TRUE);
if IfTable <> nil then
begin
for i := 0 to IfTable.dwNumEntries - 1 do
begin
if IfTable.table[i].dwType <> MIB_IF_TYPE_LOOPBACK then
if Way = 'In' then result := IfTable.table[i].dwInOctets / 1024 / 1024
else result := IfTable.table[i].dwOutOctets / 1024 / 1024;
end;
end;
finally
Freemem(IfTable);
end;
end;
Aber ich habe ein problem mit ihr!
Die Werte, die von dieser Function rausgegeben werden unterscheiden sich MAßGEBLICH von den bytes, die in der DFÜ-Anzeige angezeigt werden!
ein timer aktualisiert alle 1 sek ein label mit dem Up und Down; nach 10 sekunden hat man schon einen unterschied von ~200 KB!
ich hab gerade nach 1 stunde bei der dfü 20 MB und bei meinem prog 17,5 MB Download zu stehen...
hat jemand eine ahnung, wie das zustande kommt? (ich teile die bytezahl auch brav 2 mal durch 1024, nicht durch 1000 );
MfG Lefko.