Hallo zusammen,
da ich zu diesem Thema weder über Google noch hier im Forum etwas gefunden habe hier meine Frage:
Ich habe eine kleine Applikation die sich nur in den Tray laden soll. In dieser Applikation soll ein Timer alle x Sekunden eine Funktion aufrufen. Allerdings scheint der Timer nichts zu machen, erst wenn ich mit der Maus über das Tray Icon fahren nach x Sekunden wird der Aufruf gestartet. Dies ist alelrdings sehr hinderlich für mich. Die Applikation soll im späteren Verlauf überprüfen ob am jeweiligen Rechner alle gegebenheiten gegeben sind damit ein anderes Programm reibungslos Funktioniert. Wenn nicht soll es sein Tray Icon ändern, evtl. noch eine Nachricht ausgeben.
Problem ist aber das der Timer nur getriggert wird wenn a) die Zeit abgelaufen ist und b) man mit der Maus über das Tray Icon fährt. Letzteres ist das Problem. Gibt es keine Möglichkeit den Timer auch im Hintergrund sicher laufen zu lassen? Sleep ist leider keine Option da dadurch das ganze Programm angehalten wird und das Tray Menu nicht mehr funktioniert.
Vielen Dank für eure Hilfe.
Anbei der Quellcode:
[autoit]Global $tStart = TimerInit();
Global $icoState = 0;
Global $LNSTATE[1][2];
TraySetState()
TraySetIcon("ok.ico");
Func _setState($code, $state, $message)
$LNSTATE[$code][0] = $state;
$LNSTATE[$code][1] = $message;
EndFunc
Func _findBackupSet()
If FileExists("F:\Notes_Backup\BACKUP") Then
Local $gDir = FileFindFirstFile("F:\Notes_Backup\BACKUP\*!*");
If $gDir = -1 Then
_setState(0,1,"Kein Backup Set vorhanden");
Else
$BSUSER = "";
While 1
Local $file = FileFindNextFile($gDir)
If @error Then ExitLoop
$tmp = StringSplit($file,"!",2);
$tmp2 = StringSplit($tmp[0],"_",2);
For $i = 0 to UBound($tmp2)-1
$BSUSER = $BSUSER & " " & $tmp2[$i];
Next
$LNDUSER = EnvGet("LNDUSER");
If $BSUSER = $LNDUSER Then
_setState(0,0,"Backup Set entspricht dem angemeldeten Benutzer");
Else
_setState(0,2,"Backup Set entspricht nicht dem angemeldeten Benutzer");
EndIf
WEnd
EndIf
Else
_setState(0,1,"Kein Backup Set vorhanden");
EndIf
EndFunc
Opt("TrayMenuMode", 3);
[/autoit][autoit][/autoit][autoit]Local $itmIP = TrayCreateItem("IP Adresse: " & @IPAddress1,-1,-1,0)
TrayCreateItem("")
Local $itmBUS = TrayCreateItem("Check Backup Set",-1,-1,0)
TrayCreateItem("")
Local $exititem = TrayCreateItem("Exit")
While 1
Local $msg = TrayGetMsg();
$tmp = 0;
For $x = 0 to UBound($LNSTATE, 1) - 1
If $LNSTATE[$x][0] = 1 Then
If $tmp < 1 Then
$tmp = 1;
EndIf
EndIf
If $LNSTATE[$x][0] = 2 Then
If $tmp < 2 Then
$tmp = 2;
EndIf
EndIf
Next
$icoState = $tmp;
Select
Case $icoState = 0;
TraySetIcon("ok.ico");
Case $icoState = 1;
TraySetIcon("warning.ico");
Case $icoState = 2;
TraySetIcon("stop.ico");
EndSelect
Select
Case $msg = 0
ContinueLoop;
Case $msg = $itmBUS
$BS = _findBackupSet();
Case $msg = $exititem
ExitLoop
EndSelect
If TimerDiff($tStart) > 10000 Then
;_findBackupSet();
MsgBox(4096, "Test", "1");
$tStart = TimerInit();
EndIf
WEnd
Exit
[/autoit]