WMI ist ne feine Sache

  • VB6

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von hax.

    WMI ist ne feine Sache

    Also ich habe im Netz ne Page gefunden, über das WMI und bin ja sowas von begeistert, was man mit dem WMI an informationen rausbekommt z.B. beim CPU:

    CPU-Name
    Architektur
    Taktfrequenz
    Frontsidebus
    Max. Taktfrequenz
    Anzahl der Prozessoren
    ...

    man kriegt Informationen damit raus, was mit dem Windows API gar nicht möglich war. Hier einfach mal der link zu der Seite:

    dx21.com/SCRIPTING/WMI/classes.asp

    Hat das WMI irgendwie doch noch nebenwirkungen? ?(

    <font size="1"> Ich will sichergehen, nicht das dann auf manchen Windows-Versionen mein Tool nicht geht. </font>
    man kriegt Informationen damit raus, was mit dem Windows API gar nicht möglich war


    Das is so nich ganz richtig, die dinge die du da oben beschrieben hast
    sind schon mit der Win API rasuzufinden,
    z.B. lassen sich die Prozesseor architektur und die anzahl der Prozessoren mit der
    GetSystemInfo Funktion ermitteln.

    Ich würd sagen einen Nachteil hat WMI gegenüber der Win API :
    Du musst die nötigen DLL´s erst ma installieren !
    Stimmt, das vielleicht, aber die Taktfrequenz und der FSB, kriegt man nur im WMI.

    Meines wissen, ist unter Windows ME/2000/XP das WMI schon drauf, unter Windows 98 und sogar 95 gibt es ein ca. 3 MB großes Setup zum downloaden. Was mit NT ist weis ich nicht...

    Stimmt, das vielleicht, aber die Taktfrequenz und der FSB, kriegt man nur im WMI.


    Das ist auch nicht ganz richtig, du kannst dir alle CPU Infos aus diesem Registry Schlüssel holen :
    (ausser den FSB)

    HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0

    Und ich weiss auch grad keine methode den FSB zu ermitteln, aber du kannst sicher sein,
    dass es auch da einen weg gibt, zumal WMI seine daten ja auch nich einfach so bekommt,
    sondern auf irgendwelche system funktionen zurückgreifen muss !

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


    (Ich weis was kommt: ne alternative )


    Ja du hast recht :),
    es gibt ne methode das zu ermitteln,
    und zwar mithilfe der PDH.DLL (Performance Data Helper Library) die schon standardmäßig bei allen auf
    NT Basierenden Windows Versionen dabei ist (die restlichen Versionen haben mal wieder einen eintrag in der Registry,
    der die derzeitige CPU-Auslastung angibt)

    Du musst erst mal mit der PdhOpenQuery Funktion eine Struktur anlegen,
    in der die Daten gespeichert werden, danach rufst du die die Funktion
    PdhAddCounter auf, die einen Eintrag in der Query struktur anlegt und bei erfolg in den 3. Parameter
    ein handle zurückgibt, mit dem du dann die Informationen in der PdhGetDoubleCounterValue Funktion sammeln kannst.
    Vorher musst du noch mal explizit sagen das die Daten in der Struktur gespeichert werden sollen, mit dem Befehl PdhCollectQueryData.
    In Code siehts so aus:

    Dim hQuery as Long
    Dim hCounter as Long
    Dim RetVal as Long

    Call PdhOpenQuery(hQuery)
    Call PdhAddCounter(hQuery, "\Processor(0)\% Processor Time", hCounter)

    Call PdhCollectQueryData(hQuery)
    RetVal = CLng(PdhGetDoubleCounterValue(hCounter, lData))

    MsgBox "Prozessor ist zu " & lData & " % ausgelastet.",vbExclamation,"Info"



    So ich hoffe ich hab nix falsch erklärt oder durcheinander gebracht.
    Man merkt schon, das du n wirklicher VB-Profi bist, hut ab, ich versteh von VB noch nicht alles, z.B. DirectX, Datenbankprogrammierung, Drucken, Grafikdateien bearbeiten (wie Paint). Ist noch viel zu lernen, vorher will ich meinen KS-Scanner aber noch rausbringen.
    ich versteh von VB noch nicht alles, z.B. DirectX, Datenbankprogrammierung, Drucken, Grafikdateien bearbeiten (wie Paint)


    Dafür is dieses Forum da, wenn du Fragen hast, stell
    sie einfach, ich kann nich garantieren, dass jemand die
    antwort weiß, aber zumindest wird versucht deine
    Frage zu beantworten.

    Sicher, du wirst irgendwann mal vor einem Puzzle stehen
    das für dich als unlösbar erscheint und vielleicht
    wirst du von Frustration eingeholt werden. Diese
    Frustration ist qualvoll, aber die erworbenen Kenntnisse
    und Fähigkeiten die kommen wenn du das Puzzle gelöst
    hast, dürften die Mühe wert sein.
    Dass wir einige Fragen hier nicht beantworten können,
    sollte dich aber nicht zum verzweifeln bringen, im
    gegenteil, es steigert, wie ich hoffe, dein Vertrauen
    in deine eigenen Fähigkeiten, auch die schwierigsten
    Probleme anzugehen, sowie die Bereitschaft, zu
    misstrauen und das, was andere (und sei es Microsoft,
    denn die MSDN ist manchmal auch schlecht
    dokumentiert) dir sagen, mit gebotener Skepsis
    zu betrachten. Das is das wichtigste, vertaruen in sich
    selbst und alles andere mit gebotener Skepsis
    zu betrachten.

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