Lüfterdrehzahl auslesen

  • Ist es möglich mit AutoIt die Drehzahl von Lüftern einzulesen?
    Ich möchte nämlich ein ganz simples Programm schreiben, dass mich beim Start des PCs vor niedriger Drehzahl warnt.
    Gibt ja massenhaft Programme die so was auslesen können, nur weiß ich nicht wie ich mit AutoIt den Wert in eine Variable bekommen soll.

  • http://msdn.microsoft.com/en-us/library/…6(v=VS.85).aspx

    Bei mir funktioniert das aber nicht. Mache wohl irgenwas falsch ^^

    [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit][autoit][/autoit][autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    [/autoit][autoit][/autoit][autoit]

    $strComputer = 'localhost'

    [/autoit][autoit][/autoit][autoit]

    $Output=""
    $Output &= 'Computer: ' & $strComputer & @CRLF
    $Output &= '==========================================' & @CRLF
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')

    [/autoit][autoit][/autoit][autoit]

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Fan', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit][autoit][/autoit][autoit]

    While 1
    For $objItem In $colItems
    If IsObj($colItems) Then
    $Output = 'Information: ' & $objItem.ActiveCooling
    ToolTip($Output, 100, 100, 'Info')
    EndIf
    Next
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Hier mal die "komplette" Liste der Informationen:

    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Fan", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "ActiveCooling: " & $objItem.ActiveCooling & @CRLF
    $Output = $Output & "Availability: " & $objItem.Availability & @CRLF
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    $Output = $Output & "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "DesiredSpeed: " & $objItem.DesiredSpeed & @CRLF
    $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
    $Output = $Output & "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    $Output = $Output & "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    $Output = $Output & "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $Output = $Output & "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    $Output = $Output & "Status: " & $objItem.Status & @CRLF
    $Output = $Output & "StatusInfo: " & $objItem.StatusInfo & @CRLF
    $Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    $Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
    $Output = $Output & "VariableSpeed: " & $objItem.VariableSpeed & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Fan" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit]

    Bei mir kommt aber auch nichts verwertbares raus (Außer der Caption "Kühlgerät")

  • http://www.autoitscript.com/forum/index.php?automodule=downloads&showfile=29

    Der Download ist aber ein bisschen eingestaubt, deswegen musst du das include zu GUIConstantsEx machen, und du brauchst die WindowsConstants.au3

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit]
  • Scriptomatic sollte die neueste Version sein...

    Habe das Script mal um einen Filter erweitert, um so nur z.B. die NET-Objekte oder andere zu finden
    autoit.de/wcf/attachment/9148/

  • Danke schon mal.

    SEuBo:
    Wenn ich den Skript laufen lasse bekomme ich gar nichts raus.
    Wie bekomme ich da überhaupt ne Ausgabe raus?


  • Habe das Script mal um einen Filter erweitert, um so nur z.B. die NET-Objekte oder andere zu finden

    Leider hat Deine Anpassung mit dem Filter, hat leider 2 kleine Fehler:

    - Wenn man die Filtereingabe mit "CANCEL" abbricht gibt es einen Fehler
    - Wenn man den Filter wieder "LEER" bestätigt, wird "Select a WMI class" nicht wieder in das Combo eingefügt

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Zitat

    hat leider 2 kleine Fehler:

    das ist aber schade, ist mir in den letzten Jahren der(ziemlich intensiven) Nutzung noch nie aufgefallen, wen es stört, der kann ja ein Errorhandling einbauen.