Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:01, 11-04-2008 | #430