Scripthilfe : Systray Programm zeitgesteuert beenden und starten.

  • 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'

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

    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
    EndFunc

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

    Func Terminate()
    Exit 0
    EndFunc

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

    Func ShowMessage()
    MsgBox(4096,"","This is a message.")
    EndFunc

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

    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

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

    While 1
    If WinExists ( $Title ) Then
    WinActivate($Title, "")
    Else
    clickSysTrayByProcess($prcoess, "left")
    WinActivate($Title, "")
    EndIf

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

    IF Not WinExists( $Title ) Then
    Run($Start, "", @SW_MAXIMIZE)
    EndIf

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

    AutoItSetOption("WinTitleMatchMode", 2)
    $x = StatusbarGetText($Title)
    $res = StringSplit($x, " ")

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

    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

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

    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.

    Einmal editiert, zuletzt von Observer (23. Juli 2007 um 14:04)