Hi, ich habe da eine Frage.
Ein Programm das bei mir läuft hat einen Timer,dieser gibt mir 4 Std. zeit mit zugriff auf eine Datei.
Es können mehrere Benutzer gleichzeitig diese Datei bearbeiten.
Meine Frage ist :
Kann ich eine schleife erstellen die mir aufgrund der ausgelesenen Zeit und der Aktiven Benutzer die zeiten immer wieder mal abfragt ?
Ich sollte nebenbei an dem Rechner Arbeiten können.
Bisher habe ich folgendes :
[autoit]
#include<Systray_UDF.au3>
Dim $answer
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
$answer = 1
Global $prcoess = "pol32adm.exe"
$Title = 'Public ShareFolder - Server'
$Start = 'O:\Server\POL32ADM.exe'
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc
Func Terminate()
Exit 0
EndFunc
Func ShowMessage()
MsgBox(4096,"","This is a message.")
EndFunc
Func clickSysTrayByProcess($winProcess, $click = "left", $times = 2)
If Not ProcessExists($winProcess) Then Return -1
Local $a = _SysTrayIconProcesses ()
Local $p = MouseGetPos()
For $i = 0 To UBound($a) - 1
If $a[$i] = $winProcess Then
$pos = _SysTrayIconPos ($i)
MouseClick($click, $pos[0], $pos[1], $times, 2)
ExitLoop
EndIf
Next
MouseMove($p[0], $p[1], 1)
EndFunc ;==>clickSysTrayByProcess
While 1
If WinExists ( $Title ) Then
WinActivate($Title, "")
Else
clickSysTrayByProcess($prcoess, "left")
WinActivate($Title, "")
EndIf
IF Not WinExists( $Title ) Then
Run($Start, "", @SW_MAXIMIZE)
EndIf
AutoItSetOption("WinTitleMatchMode", 2)
$x = StatusbarGetText($Title)
$res = StringSplit($x, " ")
If $res[4] < 1 AND $res[10] < 200 Then
WinWaitActive($Title, "", 5)
ControlClick($Title, '', '&Beenden')
;$t = $res[10] * 1 * 1000 - 147000
$t = 10
EndIf
If $res[4] > 0 AND $res[10] < 200 Then
$t = $res[10] * 1 * 1000
EndIf
[/autoit][autoit][/autoit][autoit]WEnd
[/autoit]In $res steht folgender String :
Aktiv - 0 verbundene Benutzer - Demoversion, noch 0 Minuten Laufzeit mit Schreibrechten
Die MsgBoxen habe ich nur eingefügt um zu testen.
Was jetzt Passieren sollte ist folgendes.
Ist die Laufzeit höher als 60 Minuten sollte das Script in 10 Minuten nochmal nachschauen.
Dazu sollte es prüfen ob das Program läuft.
Läuft es sollte es nachschauen ob das Fenster offen ist oder ob es nur im Tray liegt,liegt es im Tray sollte es dieses Öffnen.
Läuft das Program nicht dann sollte es gestartet werden.
Bei Aktivem Fenster kann es mit Send("!b") gestoppt werden.
Dies sollte Passieren wenn das Programm 0 Aktive Member hat und die Zeit unter 60 Minuten liegt.
Gleich im Anschluss daran sollte das Prog wieder gestartet werden.
Im grunde muss das Skript den ganzen Tag mitlaufen.
Hoffe mal das ich mich verständlich ausdrückte und meine Wünsche ordentlich Formulierte.
Wäre Cool wenn mir da jemand auf die Sprünge helfen könnte.
Habe erst angefangen mit Auto-It und keine wirklich Praktische erfahrung im Proggen.
Danke euch allen für Eure Hilfestellung schonmal im voraus.
mfg
Edit //
So habe das mal bischen umgestaltet,mit einer While WEnd schleife.
Dazu die möglichkeit reingemacht mit ESC das Prog abzubrechen.
Nur eines ist etwas dumm dabei.
Es läuft jetzt die ganze zeit im Vordergrund mehr oder weniger
Also an dem PC kann ich solange das Script läuft nix machen.