Frage zu nem "Kleinen" Script

  • Gut :D
    Ja dass ist denk ich möglich, mit

    [autoit]


    ;Holt ein bestimmtes Fenster in den Vordergrund und setzt den Fokus auf dasselbe.
    WinActivate('title' [,'text'])

    [/autoit]
  • Winactive ist ja im Script Drinne aber erst nach dem die fehlermeldung kommt , Suche Gerade im Wiki oder Buch nach der Erklärung für den WinSetState mit dme soll man minimieren und maximieren können

  • fenster maximieren:

    [autoit]

    WinSetState("titel des fensters","",@SW_MAXIMIZE)

    [/autoit]


    und minimieren geht mit

    [autoit]

    @SW_MINIMIZE

    [/autoit]


    du könntest aber auch

    [autoit]

    @SW_RESTORE

    [/autoit]


    benutzen statt minimize, da das spiel evtl pausiert wird wenn es minimiert wird??

    Edit: sorry, jetzt hab ich dich vom selber rausfinden abgehalten....wenn dus nicht findest, schau oben ;)

  • Winactive ist ja im Script Drinne aber erst nach dem die fehlermeldung kommt , Suche Gerade im Wiki oder Buch nach der Erklärung für den WinSetState mit dme soll man minimieren und maximieren können


    Da

    [autoit]

    ;Zeigt, versteckt, minimiert, maximiert oder stellt ein Fenster wieder her.
    WinSetState('title','text',flag)
    ;~ title Der Titel des Fensters, dessen Status verändert werden soll. Siehe Erweiterte Fenstertiteldefinition.
    ;~ text Der Text des Fensters, dessen Status verändert werden soll.
    ;~ flag Der "show" Flag des ausgeführten Programms:
    ;~ @SW_HIDE = Versteckt das Fenster.
    ;~ @SW_SHOW = Zeigt ein vorher verstecktes Fenster.
    ;~ @SW_MINIMIZE = Minimiert das Fenster.
    ;~ @SW_MAXIMIZE = Maximiert das Fenster.
    ;~ @SW_RESTORE = Macht eine Fensterminimierung oder -maximierung rückgängig.
    ;~ @SW_DISABLE = Deaktiviert ein Fenster.
    ;~ @SW_ENABLE = Aktiviert ein Fenster.

    [/autoit]


    Verwende doch die F1 Taste in Scite ^^

    ***Edit***
    Fies nun wahr 'r4lf' Schneller X(

    ***Edit1***
    Hier kannst du die Hilfe Herunterladen
    Einfach in dass AutoIt Installations Verzeichniss Kopieren da man als Standard die Englishe Hilfe drin hat

    Einmal editiert, zuletzt von Skilkor (1. März 2011 um 17:22)

  • okay die funktion habe ich soweit verstand Nur wie kann ich nu ne Minimierung und Maximierung in 20 Minuten Intervall einbauen und das Auserhalb der Anderen Funktionen?

  • Denk ein bisschen nach?
    Ansonnsten muss ich dich doch in die Jobbörse verweissen :D
    Tip:
    Du kennst bisjetze die Funktionen

    [autoit]


    While 1
    Wend
    Sleep()
    WinSetState()
    WinActivate()
    WinActive()
    WinExists()
    WinWaitActive()
    WinClose()
    WinWaitClose()
    ShellExecute()
    Run()
    Send()
    Do
    If
    EndIf
    Else
    ElseIf
    Until
    Not

    [/autoit]


    Und sicher nochn Paar mehr....
    Versuche daraus was zu machen :D
    Skilkor

  • soo das habe ich bis jetz hoffe das is so richtig ^^
    108000 sollten 30 minuten sein

    nur überlege ich gerade wie und ob der While so hinhauen wird das er das Loopt


    Edit : Ok da stimmt was nicht der wartet keine 30 minuten hehe


    Code
    While 1
    $TimerInit = TimerInit()
    While TimerDiff($TimerInit) < 108000
    WinSetState("[CLASS:Ultima Online]", "", @SW_MINIMIZE )
    Sleep(3000)
    WinSetState("[CLASS:Ultima Online]", "", @SW_RESTORE )
    WEnd
    Wend
  • Erstens war das mit der Zeit natürlich falsch, wie skilkor richtig erwähnt hatte und zweitens macht deine Funktion so keinen Sinn.

    Mach das mal so:

    [autoit]


    $start = timerinit()
    while 1

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

    ; hier deine routine wegen den abstürzen
    ;....
    ;jetzt machste noch in jedem durchlauf deiner Hauptschleife die Abfrage wieviel Zeit vergangen ist
    $runtime = timerdiff($start)
    if $runtime >= 1800000 then ; wenn seit dem timerinit 30min oder mehr vergangen sind dann...
    deinefensterwackelfunktion()
    endif

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

    wend

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

    func deinefensterwackelfunktion()
    ; hier machste nun deine maximieren mionimieren spielchen oder was auch immer
    ;wichtig:
    $start = timerinit() ; setzt deinen timer wieder auf Anfang, damit diese Funktion hier erst wieder in 30min ausgeführt wird
    endfunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • das hatte ich bis jetz eben gebasstelt und es lief sogar war auf 30 Sekunden gestellt ^^

    Code
    While 1
    $TimerInit = TimerInit()
    WinSetState("[CLASS:Ultima Online]", "", @SW_MINIMIZE )
    Sleep(3000)
    WinSetState("[CLASS:Ultima Online]", "", @SW_RESTORE )
    While TimerDiff($TimerInit) < 30000
    WEnd
    Wend
  • soo würde das jez aussehen wenn ich meine routinen einfügen würde


    [autoit]

    $start = timerinit()
    while 1

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

    If WinExists("Ultima Online - (Keine Rückmeldung)") Then
    WinActivate("Ultima Online - (Keine Rückmeldung)")
    Send('{UP},{ENTER}')
    Sleep(1000)
    WinKill("Ultima Online - (Keine Rückmeldung)")
    ShellExecute("C:Programme\Razor\Razor.exe")
    Sleep(5000)
    $runtime = timerdiff($start)
    EndIf
    If WinExists('Microsoft Windows') Then
    WinActivate('Microsoft Windows')
    Send('{UP},{ENTER}')
    Sleep(1000)
    WinKill("Microsoft Windows")
    ShellExecute("C:Programme\Razor\Razor.exe")
    Sleep(5000)
    $runtime = timerdiff($start)
    EndIf
    If WinExists("Programm beenden - Ultima Online - " ) Then
    WinActivate("Programm beenden - Ultima Online - ")
    Send('{LEFT},{ENTER}')
    Sleep(1000)
    WinKill("Programm beenden - Ultima Online - ")
    ShellExecute("C:Programme\Razor\Razor.exe")
    Sleep(5000)
    $runtime = timerdiff($start)
    EndIf

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

    $runtime = timerdiff($start)
    if $runtime >= 1800000 then
    deinefensterwackelfunktion()
    endif

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

    wend

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

    func deinefensterwackelfunktion()
    WinSetState("[CLASS:Ultima Online]", "", @SW_MINIMIZE )
    Sleep(5000)
    WinSetState("[CLASS:Ultima Online]", "", @SW_RESTORE )
    $start = timerinit()
    endfunc

    [/autoit]
  • Sorry aber, Ich finde dies ist zu Lang... Das kann man doch So (Auch ohne Array) verkürzen
    Ich überlege mir mal was ^^

    ***Edit***
    Mir fällt grad nix ein (Hab zu viel Hunger, da is mein Hirn zu Schlapp :S)

  • Joar und biste damit nun zufrieden? Die Zeilen 11, 20 und 29 sind btw unnötig. Auch die beiden Zeilen 32 und 33 könnte man zu einer Zeile kürzen:

    [autoit]


    if timerdiff($start) >= 1800000 then

    [/autoit]
  • Sorry aber, Ich finde dies ist zu Lang... Das kann man doch So (Auch ohne Array) verkürzen
    Ich überlege mir mal was ^^

    ***Edit***
    Mir fällt grad nix ein (Hab zu viel Hunger, da is mein Hirn zu Schlapp :S)


    Dann Mal Guten Hunger :)

    misterspeed

    wenn ich Zeile 1 $start = timerinit()

    gegen

    if timerdiff($start) >= 1800000 then


    ersetze sagt er das in zeile 56 das IF argument kein gültiges EndIF hatt

  • Schon klar, da jedes If mit einem EndIf beendet werden muss
    wie z.b. im obrigen Script

    [autoit]


    If WinExists("Ultima Online - (Keine Rückmeldung)") Then
    WinActivate("Ultima Online - (Keine Rückmeldung)")
    Send('{UP},{ENTER}')
    Sleep(1000)
    WinKill("Ultima Online - (Keine Rückmeldung)")
    ShellExecute("C:Programme\Razor\Razor.exe")
    Sleep(5000)
    $runtime = timerdiff($start)
    EndIf

    [/autoit]


    Poste doch am Besten das gesamte Script in einem Spoiler

    PHP
    [spoiler][autoit]Deine Script[/autoit][/spoiler]
  • :rofl: bei näherem nachdenken leuchtet das sogar ein heheh man bin ich ein anfänger

    aber diese Function find ich cool und sind nicht so schwer zu bauen wenn man mal raus hatt wie das gehen sollten

  • Ich habe auch nie behauptet, dass du Zeile 1 ersetzen sollst, lies mein Posting doch nochmal genauer.
    Hier mal eine etwas optimiertere Funktion, die unnötig doppelte Sachen zusammenfasst:

    [autoit]


    Global $fenstertitel[3]
    $fenstertitel[0]="Ultima Online - (Keine Rückmeldung)"
    $fenstertitel[1]="Microsoft Windows"
    $fenstertitel[2]="Programm beenden - Ultima Online - "
    Global $razor = "C:Programme\Razor\Razor.exe"
    Global $start = timerinit()

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

    while 1
    $counter = 0
    While $counter < UBound($fenstertitel)
    If WinExists($fenstertitel[$counter]) Then
    WinActivate($fenstertitel[$counter])
    Send('{UP},{ENTER}')
    Sleep(1000)
    WinKill($fenstertitel[$counter])
    ShellExecute($razor)
    Sleep(5000)
    EndIf
    $counter += 1
    WEnd

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

    if TimerDiff($start) >= 1800000 then
    deinefensterwackelfunktion()
    endif
    wend

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

    Func deinefensterwackelfunktion()
    WinSetState("[CLASS:Ultima Online]", "", @SW_MINIMIZE )
    Sleep(5000)
    WinSetState("[CLASS:Ultima Online]", "", @SW_RESTORE )
    $start = timerinit()
    EndFunc

    [/autoit]