o.O Falsch verstanden ^^
Ich habe den Code genommen (
Link)! Problem: Der Wert war so groooooooooooß, dass es Millibits sein müssten. Da man aber nicht Millibits messen kann, kann das Ergebnis nicht sein.
Hier mein Code:
Delphi-Quellcode:
function TForm1.getTraffic(Networkcard : Integer) : TTraffic;
var
// der andere
MibRow: TMibIfRow;
IntfTable: PMibIfTable;
Size: DWORD;
// Luckie
IfTable: PMIB_IFTABLE;
dwSize: Cardinal;
// alle
i: Integer;
begin
Result[0] := 0;
Result[1] := 0;
(*Size := 0;
if GetIfTable(nil, Size, True) <> ERROR_INSUFFICIENT_BUFFER then
Exit;
IntfTable := AllocMem(Size);
try
if GetIfTable(IntfTable, Size, True) = NO_ERROR then
begin
for I := 0 to IntfTable^.dwNumEntries - 1 do
begin
{$R-}
MibRow := IntfTable.Table[I];
{$R+}
if MibRow.dwType <> MIB_IF_TYPE_ETHERNET then
Continue; // oder MIB_IF_TYPE_PPP
if i = Networkcard then begin // Welche Verbindung
Result[0] := MibRow.dwInOctets;
Result[1] := MibRow.dwOutOctets;
end;
end;
end;
finally
FreeMem(IntfTable);
end;*)
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 begin
Result[0] := IfTable.table[i].dwInOctets;
Result[1] := IfTable.table[i].dwOutOctets;
end;
end;
end;
finally
Freemem(IfTable);
end;
end;
Und das bekomme ich:
Zitat:
-1066368571
221048498
Der Ergäben in MBit:
Zitat:
-1016,96831798553466796875 MBit/s
210,8082752227783203125 MBit/s
Und dann bin ich mit 11 MBit/s (WLAN) bzw. 3 MBit/s (Internet) drinne...?