Цитата nevson:
но это не совсем то... Не подскажешь, как получить статистику через Ras API? »
|
примерно так, проверяй:
Код:

; Возвращает количество байт, отправленых или принятых через RAS интерфейс
; $iFlag - что включать в расчет:
; 1 - принято,
; 2 - отправлено,
; 3 - всего.
Func _RASConnBytes ($iFlags = 1)
Local Const $MAX_PATH = 260
Local Const $RAS_MaxDeviceType = 16
Local Const $RAS_MaxEntryName = 256
Local Const $RAS_MaxDeviceName = 128
$tRASCONN = DllStructCreate("dword dwSize;hwnd hRasConn;char szEntryName["& $RAS_MaxEntryName+1 &"];" & _
"char szDeviceType["& $RAS_MaxDeviceType+1 &"];" & _
"char szDeviceName["& $RAS_MaxDeviceName+1 &"];" & _
"char szPhonebook[" & $MAX_PATH &"];" & _
"dword dwSubEntry;byte guidEntry[16];dword dwFlags;byte luid[8]")
$tRAS_STATS = DllStructCreate( "dword dwSize;dword dwBytesXmited;dword dwBytesRcved;dword dwFramesXmited;" & _
"dword dwFramesRcved;dword dwCrcErr;dword dwTimeoutErr;dword dwAlignmentErr;" & _
"dword dwHardwareOverrunErr;dword dwFramingErr;dword dwBufferOverrunErr;" & _
"dword dwCompressionRatioIn;dword dwCompressionRatioOut;dword dwBps;dword dwConnectDuration")
$iCntByte = DllStructCreate("dword")
$iCntConn = DllStructCreate("dword")
DllStructSetData($iCntByte, 1, DllStructGetSize($tRASCONN) )
DllStructSetData($tRASCONN, 1, DllStructGetSize($tRASCONN) )
DllStructSetData($tRAS_STATS,1, DllStructGetSize($tRAS_STATS))
$aRet = DllCall("rasapi32.dll", "int", "RasEnumConnections", "ptr", DllStructGetPtr($tRASCONN), "ptr", DllStructGetPtr($iCntByte), "ptr", DllStructGetPtr($iCntConn))
If $aRet[0] Then Return SetError(2, $aRet[0], -1)
If DllStructGetData($iCntConn,1)<1 Then Return SetError(1, 0, 0) ; Ошибка: нет открытых соединений
$aRet = DllCall("rasapi32.dll", "int", "RasGetConnectionStatistics", "hwnd", DllStructGetData($tRASCONN, "hRasConn"), "ptr", DllStructGetPtr($tRAS_STATS))
If $aRet[0] Then Return SetError(3, $aRet[0], -1)
Local $iBites = 0
If BitAnd($iFlags,1) Then $iBites += DllStructGetData($tRAS_STATS,3)
If BitAnd($iFlags,2) Then $iBites += DllStructGetData($tRAS_STATS,2)
Return $iBites
EndFunc ; ==> _RASConnBytes