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

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

Аватара для Maza Faka

Ветеран


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

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


Babullika
Незнаю, как сработает с ADSL подключением, но с dialup работает:
Код: Выделить весь код
While 1
    If Int(_RASConStat(4) / 1000 / 60) >= 60 Then
        $hRASConn = _RasEnumConnections()
        If Not @error Then _RasHangUp($hRASConn)
        Exit
    EndIf

    Sleep(1000)
WEnd

; #FUNCTION# ====================================================================================================================
; $iFlag:
; 1 - The number of bytes transmitted through this connection or link.
; 2 - The number of bytes received through this connection or link.
; 3 - Total
; 4 - The amount of time, in milliseconds, that the connection or link has been connected.
Func _RASConStat($sFlags = 1)
    Local $hRASConn = _RasEnumConnections()
    If @error Then Return SetError(1, 0, 0)

    $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")

    DllStructSetData($tRAS_STATS, "dwSize", DllStructGetSize($tRAS_STATS))

    $aRet = DllCall("rasapi32.dll", "int", "RasGetConnectionStatistics", _
                                            "hwnd", $hRASConn, _
                                            "ptr", DllStructGetPtr($tRAS_STATS))
    If $aRet[0] Then Return SetError(2, 0, 0)

    Local $iResult = 0

    Switch $sFlags
        Case 1
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesXmited")
        Case 2
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesRcved")
        Case 3
            $iResult = DllStructGetData($tRAS_STATS, "dwBytesXmited") + DllStructGetData($tRAS_STATS, "dwBytesRcved")
        Case 4
            $iResult = DllStructGetData($tRAS_STATS, "dwConnectDuration")
    EndSwitch

    Return $iResult
EndFunc   ;==>_RASConStat

Func _RasEnumConnections()
    Local Const $MAX_PATH = 260
    Local Const $RAS_MaxDeviceType = 16
    Local Const $RAS_MaxEntryName = 256
    Local Const $RAS_MaxDeviceName = 128

    Local $tRASCONN, $iCntByte, $iCntConn, $aRet

    $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]")

    DllStructSetData($tRASCONN, "dwSize", DllStructGetSize($tRASCONN))

    $iCntByte = DllStructCreate("dword")
    $iCntConn = DllStructCreate("dword")

    DllStructSetData($iCntByte, 1, DllStructGetSize($tRASCONN))

    $aRet = DllCall("rasapi32.dll", "int", "RasEnumConnections", _
                                            "ptr", DllStructGetPtr($tRASCONN), _
                                            "ptr", DllStructGetPtr($iCntByte), _
                                            "ptr", DllStructGetPtr($iCntConn))

    If $aRet[0] Then Return SetError(1, $aRet[0], -1)
    If DllStructGetData($iCntConn, 1) < 1 Then Return SetError(2, 0, 0) ;Error: not opened connections

    Return DllStructGetData($tRASCONN, "hRasConn")
EndFunc   ;==>_RasEnumConnections

Func _RasHangUp($HRASCONN)
    $aRet = DllCall("Rasapi32.dll", "int", "RasHangUp", _
                                            "hwnd", $HRASCONN)
    Return $aRet[0]
EndFunc   ;==>_RasHangUp

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:20, 30-11-2008 | #1228