Hallo liebe Autoit Gemeinde, ich benötige mal wieder einen freundlichen Denkanstoß. Ich habe ein kleines TrayScript gebastelt, welches mir verschiedene Systemwerte anzeigt, bspw. verbleibender RAM, Prozessor Auslastung... weitere werden folgen. Ich habe es hinbekommen, dass die Anzeige im Tray aktualisiert wird, ohne dass ich imer wieder neu rauf gehen muss, leider funktionieren die eingebauten SplashScreens, die aufpoppen sollen, wenn ein bestimmter Wert untetschritten wird nun nicht mehr, hat jemand ne Idee ? Das Script sieht so aus:
AutoIt
#include <GuiToolTip.au3>
#include <TrayConstants.au3>
#include <GuiToolTip.au3>
#include <MemoryConstants.au3>
#include <WinAPISys.au3>
#include <GuiToolTip.au3>
TraySetIcon("authui.dll", -0)
GLOBAL $LowRam= 5 ; GB
Global $ChargeLow = 60
Global $ProcLoadHi = 90
GLOBAL $NewFreeRam, $NewBatState, $conDat, $NewProcLoad, $NewfltDriveFreeSpace, $aData
Global $strDrive = "C:\", _
$PreviousfltDriveFreeSpace = GetDriveFreeSpace($strDrive), _
$fltDriveLowSpace = 20 ; GB
$sPreviousFreeRam = GetFreeRam()
$sPreviousBatState = _BatteryStatus()
$sPreviousconState = _AcCON()
$sPreviousProcLoad = GetCPUavg()
ManageTrayIcon()
Func ManageTrayIcon()
TraySetToolTip($sPreviousFreeRam & " GB" & " Free RAM" & @CRLF & "Aufgeladen: " & $sPreviousBatState & "%" & @CRLF & "Prozessor Auslastung :" & $sPreviousProcLoad & " %" & @CRLF & $sPreviousconState & @CRLF & "SytemDrive free on '" & $strDrive & "' : " & $PreviousfltDriveFreeSpace & " GB")
While True
$a = WinList("[CLASS:tooltips_class32]")
For $i = 1 To UBound($a)-1
If WinGetTitle($a[$i][1]) = $sPreviousFreeRam Then
$NewfltDriveFreeSpace = GetDriveFreeSpace($strDrive)
$NewFreeRam = GetFreeRam()
$NewBatState = _BatteryStatus()
$NewConState = _AcCON()
$NewProcLoad = GetCPUavg()
$NewTitle = "Health Status"
If $NewFreeRam <> $sPreviousFreeRam Then
ConsoleWrite(WinGetTitle($a[$i][1]) & @CRLF)
TraySetToolTip($NewFreeRam & " GB" & " Free RAM" & @CRLF & "Aufgeladen: " & $NewBatState & "%" & @CRLF & "Prozessor Auslastung :" & $NewProcLoad & " %" & @CRLF & $NewConState& @CRLF & "SytemDrive free on '" & $strDrive & "' : " & $NewfltDriveFreeSpace & " GB")
_Checks()
WinSetTitle($a[$i][1],"",$NewFreeRam)
ControlSetText($a[$i][1],"","",$NewFreeRam)
_GUIToolTip_Update($a[$i][1])
$sPreviousFreeRam = $NewFreeRam
EndIf
EndIf
Next
; Sleep(10)
WEnd
EndFunc
Func _checks()
;RAM LEVEL
IF ($NewFreeRam <= $LowRam) Then
Warn()
ELSE
EndIf
;SPACE Level
IF $NewfltDriveFreeSpace > $ProcLoadHi Then
Warn2()
ELSE
EndIf
;Charge Level
IF $NewBatState <= $ChargeLow AND ( $ConDat = 0) Then
Warn3()
ELSE
EndIf
;Last Level
IF $NewProcLoad > $ProcLoadHi Then
Warn4()
ELSE
EndIf
EndFunc
Func _BatteryStatus()
$aData = _WinAPI_GetSystemPowerStatus(); Array mit Batterie Werten einlesen
$ChargeDat = $aData[2]
REturn $ChargeDat
EndFunc ;==>_BatteryStatus
Func _AcCON()
$bData = _WinAPI_GetSystemPowerStatus(); Array mit Batterie Werten einlesen
$ConDat = $aData[0]
IF $ConDat = 0 Then
$ConDatR = "Kein Netzteil"
Else
$ConDatR = "Netzteil angeschlossen"
ENDIF
REturn $ConDatR
EndFunc ;==>_BatteryStatus
FUNC GetFreeRam() ; verfügbarern RAM ermitteln
$aMemStats = MemGetStats()
Return Round($aMemStats[$MEM_AVAILPHYSRAM]/1024/1024, 2)
ENDFUNC
Func GetDriveFreeSpace($strDrive)
Return Round((DriveSpaceFree($strDrive)/1024), 1)
EndFunc
Func GetCPUavg()
LOCAL $objWMIService, $objProcessList, $objProcess, $iLoad
$iLoad = 0
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$objProcessList = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For $objProcess In $objProcessList
$iLoad = $iLoad + $objProcess.LoadPercentage
Next
Return $iLoad
EndFunc
FUNC Warn()
SplashTextOn("Splash", "RAM wird knapp", 450, 45, 1400, 1000, 1, "Verdana")
sleep(8000)
SplashOff()
ENDFUNC
FUNC Warn2()
SplashTextOn("Splash", "Speicherplatz auf dem SystemDrive wird knapp", 450, 45, 1400, 1000, 1, "Verdana")
sleep(7000)
;SplashOff()
ENDFUNC
FUNC Warn3()
SplashTextOn("Splash", "Batterie wird knapp, bitte laden!!!", 450, 45, 1400, 1000, 1, "Verdana")
sleep(7000)
SplashOff()
ENDFUNC
FUNC Warn4()
SplashTextOn("Splash", "Sehr hohe Prozessor Auslastung!!!", 450, 45, 1400, 1000, 1, "Verdana")
sleep(7000)
SplashOff()
ENDFUNC
Alles anzeigen
Ich hoffe es sing keine Globals mehr innerhalb der Funktionen,
ein schönes Wochenende noch
lg