бери и используй таймер, проверяющий соединение с нетом через каждую секунду... можно еще эти данные брать из св-в соединения... но это, по-моему, только для Win на платформе NT...
sne:
>2alexandrus
> Ну и в тему о соединениях !
> Подскажите в какую сторону копать , чтобы узнать скорость соединения, количество отправленных/полученных данных и т.д. и т.п.
>см. форум, тоже три раза кидал я этот код...
Смотрел 40 раз назад .
Увы тяжко это ( поиск только сниться ... ).
Буду очень признателен ,если скинешь на мыло
Alexus@yugorsk.ru
Ты будешь единственный кто откликнулся , или единстенный кто обладает таким кодом , именно по этой теме! Я забодался его искать !
Private Declare Function RasGetConnectionStatistics Lib "rasapi32.dll" (ByVal hRasConn As Long, lpStatistics As RASSTATS2000) As Long
Private Declare Function RasHangUp Lib "rasapi32" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasconn As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Type RasEntryName
dwSize As Long
szEntryName(256) As Byte
End Type
Private Type RasConn
dwSize As Long
hRasConn As Long
szEntryName(256) As Byte
szDeviceType(16) As Byte
szDeviceName(128) As Byte
End Type
Private Type RASSTATS2000
dwSize As Long
dwBytesXmited As Long ' The number of bytes transmitted through this connection or link.
dwBytesRcved As Long ' The number of bytes received through this connection or link.
dwFramesXmited As Long ' The number frames transmitted through this connection or link.
dwFramesRcved As Long ' The number of frames received through this connection or link.
dwCrcErr As Long ' The number of cyclic redundancy check (CRC) errors on this connection or link.
dwTimeoutErr As Long ' The number of timeout errors on this connection or link.
dwAlignmentErr As Long ' The number of alignment errors on this connection or link.
dwHardwareOverrunErr As Long ' The number of hardware overrun errors on this connection or link.
dwFramingErr As Long ' The number of framing errors on this connection or link.
dwBufferOverrunErr As Long ' The number of buffer overrun errors on this connection or link.
dwCompressionRatioIn As Long ' The compression ratio for the data being received on this connection or link.
dwCompressionRatioOut As Long ' The compression ratio for the data being transmitted on this connection or link.
dwBps As Long ' The speed of the connection or link, in bits per second.
dwConnectDuration As Long ' The amount of time, in milliseconds, that the connection or link has been connected.
End Type
Private Type VBRasStats95
BytesXmited As Long ' The number of bytes transmitted through this connection or link.
BytesRcved As Long ' The number of bytes received through this connection or link.
ConnectSpeed As Long
End Type
Private Const HKEY_DYN_DATA As Long = &H80000006
Public OldDay As Integer
Public StartTrafData As VBRasStats95 ' Начальный трафик, с которого мы начали слежку ...
Public Function VBRasGetStat2000(hRasConn As Long, myStats As RASSTATS2000) As Long
myStats.dwSize = Len(myStats)
VBRasGetStat2000 = RasGetConnectionStatistics(hRasConn, myStats)
End Function
Public Function VBRasGetStat9x(clsVBRasStats As VBRasStats95) As Long
 im hKey As Long
Const dUp As String = "ial-Up Adapter\"
' §§§§§§§§§§§§§§§§§§§§§§§§§§ Всякая всячина по работе с соединениями и трафиком §§§§§§§§§§§§§§§§§§§§§§§§§§
Public Sub UpdateData() ' Обновление данных (ежесекундное)
On Error GoTo er
 im RasData() As VBRASCONN, RasStat2k As RASSTATS2000, RasStat95 As VBRasStats95
If VBRasEnumConnections(RasData) = &H0 Then ' Если подключение отсутствует
With PubStat
If .lBytesReserved Or .lBytesXmited Then ' И имеются отправл. / получ. данные
PlugSet.CurDayStat.dReserved = PlugSet.CurDayStat.dReserved + .lBytesReserved
PlugSet.CurDayStat.dXmited = PlugSet.CurDayStat.dXmited + .lBytesXmited ' Мы их добавляем к статистике
PlugSet.dTrafficStat = PlugSet.dTrafficStat + .lBytesRsXm
' Потом очищаем, приравнивая их к нулю, дабы еще раз не посчитать
.lCurrentSpeed = 0: .lCurrentSpeedR = 0: .lCurrentSpeedX = 0
.lBytesReserved = 0: .lBytesRsXm = 0: .lBytesXmited = 0
Call SavePlugSet ' Сохраняем статистику и настройки ...
End If
End With
bNetState = False ' Сообщаем всему плагину - соединения нет...
Exit Sub
End If
If Not bNetState Then ' Если тока коннекта небыло, а вот он появился
 im tmpTraffic As gbHWPlugStat ' Запоминаем трафик, дабы небыло трафика за весь сеанс ...
tmpTraffic = GetTrafficData
StartTrafData.BytesRcved = tmpTraffic.lBytesReserved ' Узнаем начальный трафик
StartTrafData.BytesXmited = tmpTraffic.lBytesXmited
bNetState = True
End If
Call UpdateTrafficData
If Not vbGetTime.wDay = OldDay Then
With PlugSet.CurDayStat ' Сохраненяем статистику в файл (за прошедший день)
If PlugSet.Log_bWrite Then
If .dXmited Or .dReserved Or .lMaxSpeed Then
Call mIniEx.IniSetValue(PlugSet.Log_sFileName, "Statistics", Date - 1, .dXmited & ";" & .dReserved & ";" & .lMaxSpeed)
End If
End If
End With
PlugSet.CurDayStat.dReserved = 0&
PlugSet.CurDayStat.dXmited = 0&
PlugSet.CurDayStat.lMaxSpeed = 0&
End If
Exit Sub
er: Call MsgBox(mIniEx.IniGetValue(LngPath, "Msg", "m13", vbNullString) & vbCrLf & LngPath, , "UpdateData"
End Sub
Private Sub UpdateTrafficData()
 im tmpTraffic As gbHWPlugStat
tmpTraffic = GetTrafficData
' Считаем не абсолютный трафик, а как сумму по скорости за каждую секунду
With tmpTraffic
PubStat.lBpS = .lBpS
PubStat.lBytesReserved = tmpTraffic.lBytesReserved - StartTrafData.BytesRcved
PubStat.lBytesXmited = tmpTraffic.lBytesXmited - StartTrafData.BytesXmited
PubStat.lBytesRsXm = PubStat.lBytesReserved + PubStat.lBytesXmited
PubStat.lCurrentSpeed = .lCurrentSpeed
PubStat.lCurrentSpeedR = .lCurrentSpeedR
PubStat.lCurrentSpeedX = .lCurrentSpeedX
End With
If PubStat.lCurrentSpeed > PlugSet.CurDayStat.lMaxSpeed Then PlugSet.CurDayStat.lMaxSpeed = PubStat.lCurrentSpeed
End Sub
Private Function GetTrafficData() As gbHWPlugStat ' Обновление данных по трафику
On Error Resume Next ' Тут простое присваивание данных трафика не подходит, т.к.
' если выгрузить статиста, а потом запустить, то данные в лог
 im RasData() As VBRASCONN ' запишутся двойные
If VBRasEnumConnections(RasData) = &H0 Then Exit Function ' Поэтому используем нашу статистику (рпичем двойнуя, т.к.
' статистика за текущую секунду все время стирается, см frmMain)
If OS_Version.dwPlatformId = &H2 And Not OS_Version.dwMajorVersion < 5 Then
 im RasStat2k As RASSTATS2000
Call VBRasGetStat2000(RasData(0).hRasConn, RasStat2k)
GetTrafficData.lBpS = .dwBps
End With
ElseIf OS_Version.dwPlatformId = &H1 Then
 im RasStat95 As VBRasStats95
Call mConnections.VBRasGetStat9x(RasStat95)
2sne, давай-ка оформим и в примеры засунем
2alexandrus, Еще раз большое спасибо (2..4.. 8..16.........1024 раз ... )!)))))))))))))Чтобы уж как истинный программер
Вот моя программа счёта статистики с учётом времени суток. Обязательно должно быть создано диалап соединения! CrateLinks программа для создания ярлыков к этой программе статистики, токо она должна бысть скомпилирована в NetTime.exe
Скачать программу можно сдесь: