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.
Lüfterdrehzahl auslesen
-
- [ offen ]
-
das Keks -
24. April 2010 um 11:39 -
Geschlossen -
Erledigt
-
-
Hi
hängt sowas nicht von der hardware ab. Ich glaub, dass man von Hardware zu Hardware unterschiedliche treiber braucht um daruaf zuzugreifen.
-
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
[/autoit][autoit][/autoit][autoit]
$wbemFlagForwardOnly = 0x20$strComputer = 'localhost'
[/autoit][autoit][/autoit][autoit]$Output=""
[/autoit][autoit][/autoit][autoit]
$Output &= 'Computer: ' & $strComputer & @CRLF
$Output &= '==========================================' & @CRLF
$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Fan', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
[/autoit][autoit][/autoit][autoit]While 1
[/autoit][autoit][/autoit][autoit]
For $objItem In $colItems
If IsObj($colItems) Then
$Output = 'Information: ' & $objItem.ActiveCooling
ToolTip($Output, 100, 100, 'Info')
EndIf
Next
WEndFunc _Exit()
[/autoit]
Exit
EndFunc -
Hier mal die "komplette" Liste der Informationen:
Spoiler anzeigen
[autoit]; Generated by AutoIt Scriptomatic
[/autoit] [autoit][/autoit] [autoit]$wbemFlagReturnImmediately = 0x10
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"$Output=""
[/autoit] [autoit][/autoit] [autoit]
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Fan", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)If IsObj($colItems) then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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" )
EndifFunc WMIDateStringToDate($dtmDate)
[/autoit]
Return (StringMid($dtmDate, 5, 2) & "/" & _
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFuncBei mir kommt aber auch nichts verwertbares raus (Außer der Caption "Kühlgerät")
-
Zitat
; Generated by AutoIt Scriptomatic
Woher bekomme ich denn den Scriptomatic???
-
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>
[/autoit]
#include <WindowsConstants.au3> -
Ok mach ich. Danke
-
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 findenLeider 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 -
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.