Traffic.DLL wie benutzen?

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Unknown.

    Traffic.DLL wie benutzen?

    Hab gerade einen Post von Unknow gelesen, wo er einem User empfielt mit einer DLL zu arbeiten (dort ging es um Grafik konvertierung).

    Nun hab ich eine Datei mit dem Namen Traffic gefunden und hoffe inständig, damit meinen Traffic auslesen zu können.

    Leider waren keine Beispiele zur DLL zu finden, und die 130.000 Treffer bei Onkel Google waren mir auch irgendwie zu viel.

    Hat einer von euch ne Ahnung, wie diese Datei zu nutzen ist?

    Bin für jeden Rat (am Besten mit Code) dankbar.

    MfG
    Only4U
    Genau diesen möchte ich haben.

    Vorab:
    Ich gehe über Router ber DSL ins INet, also bin ich immer online. Anpingen eines INet-Servers bringt mir nichts, um zu sehen, ob mein Rechner das INet benutzt.

    Dazu möchte ich den INet-Traffic (unabhängig vom Anschluß mit oder ohne Router) auslesen, damit ich sagen kann:
    Traffic-> ist wohl online
    10 min kein Traffic-> ist wohl nicht mehr online

    DFÜ-Verbindungen sollte per VB ohne Probbs auszulesen sein, eckenweise halt nur System-Abhängig.
    Eine XP-Routiene läuft unter 98 nicht unbedingt.

    Nochmal zu meinem Proggy
    Das Proggy besteht aus einem Server-Proggy (der Sammelt alle Daten)
    und beliebig vielen Clients, die sind jeweils auf allen Rechnern drauf und schauen, wieviel wann gesaugt wurde.
    Diese Daten schicken die Clients an den Server und dieser macht daraus eine Grafik.
    Somit kann ich am Jahresende sehen, an welchen Tagen wieviele Rechner wieviel Traffic erzeugt haben.

    Also eigendlich nur Spielerei.

    Hast du eine Ahnung, wie ich die Traffic.DLL auslesen kann?
    Wer echt nett!!

    MfG
    Only4U
    Also folgendes :
    Ich kann dir eine Seite nennen wo die API aufrufe der Traffic.DLL /udnd noch anderen DLL´s) aufgelistet ist.
    Soweit ich dich aber verstanden hab willst du immer gucken ob ein Client Online ist, die zeit die er Online ist messen, um am ende des jahres einen bericht erstellen zu könen wie lange er online war.

    Dazu gibts einen einfacheren weg:
    Du kannst die Funktion InternetGetConnectedState der wininet.dll benutzen um zu gucken ob man mitm internet verbunden ist.
    Die API sieht so aus :

    <pre>
    Private Declare Function InternetGetConnectedState _
    Lib "wininet.dll" (ByRef lpdwFlags As Long, _
    ByVal dwReserved As Long) As Long
    </pre>

    Um dann zu überprüfen kannst du eine Funktion wie diese hier schreiben :

    -----------------------------------------------------------------------

    <pre>
    Private Declare Function InternetGetConnectedState _
    Lib "wininet.dll" (ByRef lpdwFlags As Long, _
    ByVal dwReserved As Long) As Long

    Private Const INTERNET_CONNECTION_CONFIGURED As Long = &H40



    Function IsInternetConnectionExisting() As Boolean
    Dim dwFlags As Long

    If InternetGetConnectedState(dwFlags, 0&) Then
    If dwFlags And INTERNET_CONNECTION_CONFIGURED Then
    IsInternetConnectionExisting = True
    Else
    IsInternetConnectionExisting = False
    End If
    End If
    End Function
    </pre>

    ---------------------------------------------------------------


    Du musst dann, beispielsweise in einer Do Loop schleife
    immer überprüfen ob der Client online ist und die Zeit messen
    (z.B. kannst du 3 Double Variablen deklarieren, von mir aus StartTime,TimeOnline und CurTime, und in der Do Loop schleife follgendes aufrufen :

    <pre>
    CurTime = Timer
    </pre>

    bevor die schleife beginnt weist du auch StartTime den Wert Timer zu also :

    <pre>
    StartTime = Timer
    </pre>

    dann überprüfst du ob der user nich mehr online ist und
    subtrahierst dann StartTime von CurTime und speicherst sie in TimeOnline.

    <pre>
    TimeOnline = CurTime - StartTime
    </pre>

    und weisst dann wieviele sekunden er online war.
    diese methode ist die beste, da das über den Performance Counter läuft der hat viele Vorteile, z.B.
    hat das Timer Steuerelement eine geringe priorität in windows, so dass es vorkommen kann, dass das Timer() Ereigniss nicht mehr aufgerufen wird.
    Der Performance Counter hat das problem nicht.
    Es ist ein hardware baustein der mit einer geschwindigkeit von 3.19 MHz arbeitet. Das ist eine GEnauigkeit von weniger als eine makro sekunde (!)
    So nach diesem kleinen ausschweif schreib ich mal einen beispiel Code :


    --------------------------------------------------------------------
    <pre>

    Dim Online as Boolean
    Dim CurTime as Double
    Dim StartTime as Double
    Dim TimeOnline as Double
    Dim ExitApp as Boolean

    Function IsInternetConnectionExisting() As Boolean
    Dim dwFlags As Long

    If InternetGetConnectedState(dwFlags, 0&) Then
    If dwFlags And INTERNET_CONNECTION_CONFIGURED Then
    IsInternetConnectionExisting = True
    Else
    IsInternetConnectionExisting = False
    End If
    End If
    End Function

    Sub MainLoop()

    Do

    Online = IsInternetConnectionExisting
    DoEvents
    Loop Until Online = True or ExitApp = True

    Online = IsInternetConnectionExisting
    StartTime = Timer

    Do

    CurTime = Timer
    Online = IsInternetConnectionExisting

    DoEvents
    Loop Until Online = False or ExitApp = True

    TimeOnline = TimeOnline + (CurTime - StartTime)

    If ExitApp = False Then

    Call MainLoop

    End IF

    Exit Sub
    End Sub

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    If ExitApp = False Then
    Cancel = True
    ExitApp = True

    SaveSetting "Wunschname","Wunschname","Wunschname",TimeOnline

    End

    End If
    End Sub

    Private Sub Form_Load()

    TimeOnline = GetSetting("Wunschname",Wunschname","Wunschname")

    Call MainLoop
    End Sub

    </pre>
    ----------------------------------------------------------------------

    Vergiss nich immer die Werte aufzurufen mit GetSetting aufzurufen, die du auch mit SaveSetting gespeichert hast !
    z.B. SaveSetting "InternetCheck","Main","Time Online",TimeOnline

    und dann dementsprechend
    TimeOnline = GetSetting("InternetCheck","Main","TimeOnline")



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unknown“ ()

    WOW

    wieso hab ich eigendlich keine eMail bekommen, daß hier was für mich angekommen ist?
    egal

    Die Addy mit dem DLL-Zeugs kannst du aber trotzdem posten. Vieleicht ist da etwas brauchbares bei ;)

    Danke dir, unbekannter Helfer, DICKES LOB

    Only4U

    wieso hab ich eigendlich keine eMail bekommen, daß hier was für mich angekommen ist?


    Das geschieht nicht automatisch, du musst das gewünschte Thema erst abonnieren. Dazu klickst du einfach auf "[Beitrag abonnieren]" (oben links).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ach ja vielleicht noch eine kleine Anmerkung zudem Code:
    Das is jetzt aber sehr CPU belastend, weil er ja immer in einer Do..Loop Schleife ist ! Vielleicht solltest du das Timer-Steuerelement zur aktualisierung bentuzen (nicht um die ZEit die er Online ist zu messen, die misst du immer noch mit dem Performance Counter)