VB 5/6-Tipp 0055: Gesendete, empfangene Bytes und Geschwindigkeit einer DFÜ
von ActiveVB
Beschreibung
Die statistischen Werte, wie übertragene und gesendete Bytes einer DFÜ-Verbindung, werden in einen extra dafür vorgesehen Schlüssel der Registry eingetragen. Ein leichtes diese auszulesen und für eigne Zwecke zu nutzen. Der Haken: Bei Windows NT funktioniert dies nicht, unter Win2k ist Tipp 383 zu verwenden. Das folgende Beispiel ermittelt neben den oben genannten Werten, auch die Geschwindigkeit der aktuellen Verbindung und die die momentane als auch die durchschnittliche Transferrate.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: RegCloseKey, RegOpenKeyExA (RegOpenKeyEx), RegQueryValueExA (RegQueryValueEx) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Timersteuerelement "Timer1" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Beschriftungsfeld "Label6" ' Steuerelement: Beschriftungsfeld "Label5" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label4" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" Option Explicit 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 Any) As Long Const HKEY_DYN_DATA = &H80000006 Const KEY_READ = &H19 Const ERROR_SUCCESS = 0& Dim s1&, e1&, LBytes&, CNT&, Q&, QQ&, SUM& Private Sub Command1_Click() Reset End Sub Private Sub Form_Load() Reset LBytes = e1 Timer1.Enabled = True Timer1.Interval = 100 End Sub Private Sub Timer1_Timer() Dim EBytes&, SBytes&, CSpeed& EBytes = ReadBytes("Dial-Up Adapter\BytesRecvd") SBytes = ReadBytes("Dial-Up Adapter\BytesXmit") CSpeed = ReadBytes("Dial-Up Adapter\ConnectSpeed") If EBytes > -1 Then Label1.Caption = EBytes - e1 If SBytes > -1 Then Label2.Caption = SBytes - s1 If SBytes > -1 And EBytes <> e1 Then Label5.Caption = CSpeed End If If LBytes < EBytes Then Q = (EBytes - LBytes) / (Timer1.Interval / 1000) CNT = CNT + 1 Else Q = 0 End If SUM = SUM + Q QQ = SUM / CNT Label6.Caption = "[ " & QQ & " ] " & Q LBytes = EBytes End Sub Private Function ReadBytes(Entry$) As Long Dim hKey&, L&, X&, DW& X = RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StatData", 0, _ KEY_READ, hKey) If X <> ERROR_SUCCESS Then Exit Function X = RegQueryValueEx(hKey, Entry, 0&, DW, ByVal 0&, L) If X <> ERROR_SUCCESS Then Exit Function X = RegQueryValueEx(hKey, Entry, 0&, DW, ReadBytes, L) If X <> ERROR_SUCCESS Then Exit Function RegCloseKey hKey End Function Private Sub Reset() e1 = ReadBytes("Dial-Up Adapter\BytesRecvd") s1 = ReadBytes("Dial-Up Adapter\BytesXmit") SUM = 0 CNT = 1 End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 16 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von MGalpa am 16.08.2003 um 08:53
ma ein tipp
schaut euch doch mal Tipp 55
und kauft euch das Visual Basic Buch !
Kommentar von Only4U am 08.05.2003 um 19:04
Hi.
Hat leider nicht geklappt (Win XP mit DSL über Router)
Wie kann ich die Werte des (Anzeige vom) T-DSL Speedmanager auslesen?
Oder diese Werte aus der Registrie auslesen?
Somit kann ich durch ein einfaches Auslesen bei egal welchem Anschluß den Traffic auslesen.
Danke
Kommentar von chris am 07.02.2003 um 14:07
bitte! irgendwer wird doch ne lösung für nt/2k/xp parat haben! und welcher scherzkeks hat die haken bei vb4- nt/2k/xp gesetzt? so dummm
Kommentar von epibem am 28.10.2002 um 17:30
Bei mir bleiben alle felder auf 0
Kommentar von Jürgen am 12.10.2002 um 20:02
nur fragen und keine Antworten :(((
ich würde auch gern wiessen wie die werte des tips in XP auszulesen sind
hab etwas aus der NG ausgelesen aber leider kann ich da nix mit anfangen
weiss jemand weiter????
code :
Declare Function RasGetConnectionStatistics Lib "rasapi32.dll" (ByVal hRasConn As Long, ByRef lpStatistics As RAS_STATS) As Long
also ich kenne mich zu wenig mit API´s aus. Wen es jemand kann wäre ich dankbar über jede hilfe
Gruß Jürgen
Kommentar von Stefan Blum am 22.08.2002 um 10:51
Hallo zusammen,
gibt es eine solche Lösung auch für TCP IP Verbindungen zwecks Traffic überwachung.
Währe echt Super da wieder einmal auf meinem Server eingebrochen wurde.
Danke
Gruß an Alle
Stefan
Kommentar von Sven Müller am 16.08.2002 um 11:09
Ich möchte gerne die Daten die über ein Modem empfangen werden auswerten und sichtbar machen.Wie kann ich das Modem ansteuern um an die Daten zu kommen.Ich bedanke mich im voraus.
Kommentar von AriSoft am 23.04.2002 um 14:47
welcher Scherzkeks hat denn bei WinXp den Haken gesetzt ???
Den Registryzweig HKEY_DYN_DATA gibts doch gar nicht unter WinXP. Hat jamand ne Idee, wie man die Daten unter WinXP oder Win2k aus der Registry auslesen kann oder wo ich da suchen muß???
Bekomme leider keine Email an 55@cu.org weggeschickt (Siehe Notiz 4). Wahrscheinlich gibts die nicht mehr.
Danke im Vorraus
Kommentar von Stefan Blum am 21.04.2002 um 15:38
Gibt es sowas auch zum ermittel der Lan Aktivitäten?
Speed & Gesendete Bytes?
Oder kennt jemand die Registry Bezeichnungen an denen man diese Werte auslesen kann?
Gruß
Stefan Blum
Kommentar von Werner am 01.02.2002 um 13:58
zu VBtp0055:
die beschriebene Vorgangsweise mag ja für die überwiegende Mehrheit der PC-DFÜ-Benutzer ausreichend sein, weil (im Normalfall) nur 1 Dial-Up-Connection definiert / aktiv ist.
Wie schaut es aber bei denjenigen aus, die mehrere "Dial-Up-Adapter" definiert haben, zB. ...#2 (VPN) ?
Wie kommt man programmtechnisch von einem Device (typ/name) zum damit verbundenen Adapter, also zB. "modem"/"US-Robotics V90 Voice" - Dial-Up-Adapter... ?
Danke im Voraus.
Stichworte betreffend (RAS-) API und/oder Strukturen helfen schon weiter.
Werner.
Kommentar von Karl am 04.10.2001 um 19:36
Ja, haette auch interesse an WINNT. Wie waere das relisierbar ?
Kommentar von crazyV am 17.09.2001 um 18:42
Hi, ich hab cable und hab keine DFÜ Verbindung also wie kann ich trotzdem erfahren wie viele bytes mein PC in sich reingeladen hat... danke sehr schon im Voraus
thx crazyV
Kommentar von 555 am 25.06.2001 um 18:57
jetzt ist auch was für win2k da...
Kommentar von Pele am 23.04.2001 um 22:12
Gibt es keine Lösung für Win2k?
Kommentar von Sven Putzönius am 22.01.2001 um 20:20
das würde ich auch gerne wissen wollen.
Kommentar von Philip am 17.11.2000 um 00:14
Gibt es auch eine Möglichkeit für NT/2000?