Schachprogramm Fritz7 Schnellstart/Beenden Script

  • Für Schachfreunde stelle ich mein Fritz7 Schnellstartscript zur Verfügung.
    Damit kann ich mein Schachprogramm in ~2,5 Sekunden inkl. Daueranalysemodus starten.
    Alle lästigen Fenster werden automatisch weggeklickt.
    Ist ganz bequem um seine Partien fix zu analysieren oder zum Training.:)
    Oft lasse ich das Programm neben Schachvideos ontop laufen, wenn ich Angst vor gewissen Zügen hab guck ich sofort im Programm nach.
    Als Schachengine wird bei mir Houdini 2.0 geladen.

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.0
    Author: m47
    Version: 1.0
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    $Fritz7_Title = "Fritz 7"
    $Fritz7_Class = "[CLASS:Afx:400000:0]"
    $Fritz7_InfoFenster1_Title = "Info"
    $Fritz7_InfoFenster1_Class = "[CLASS:#32770]"
    $Fritz7_InfoFenster2_Title = "Technische Meldungen"
    $Fritz7_InfoFenster2_Class = "[CLASS:#32770]"
    $Startzeit_Fritz7_oeffnen = TimerInit()
    If ProcessExists("Houdini_20_w32.exe") Or ProcessExists("ChessProgram7.exe") Then
    While 1
    If ProcessExists("Houdini_20_w32.exe") Then
    $PID = ProcessClose("Houdini_20_w32.exe")
    If $PID Then ProcessClose($PID)
    ElseIf ProcessExists("ChessProgram7.exe") Then
    $PID = ProcessClose("ChessProgram7.exe")
    If $PID Then ProcessClose($PID)
    Else
    ExitLoop
    EndIf
    WEnd
    ToolTip("Fritz7 closed in " & Round(TimerDiff($Startzeit_Fritz7_oeffnen)/1000, 1) & " seconds", @DesktopWidth/2, @DesktopHeight/2)
    Else
    Fritz7_starten() ;
    ToolTip("Fritz7 opened in " & Round(TimerDiff($Startzeit_Fritz7_oeffnen)/1000, 1) & " seconds", @DesktopWidth/2, @DesktopHeight/2)
    EndIf
    Sleep(2000)
    ; Fritz7_starten
    ; -----------------------------------
    Func Fritz7_starten()
    Run("G:\ChessBase\Fritz7\ChessProgram7.exe", "G:\ChessBase\Fritz7\")
    WinWait($Fritz7_Class, "", 5000)
    Activate_Window($Fritz7_Title) ;
    $Timer = TimerInit()
    Do
    Send("{SPACE}")
    Sleep(20)
    Until WinExists($Fritz7_InfoFenster2_Title) = 1 Or TimerDiff($Timer) > 5000
    If WinExists($Fritz7_InfoFenster2_Class) Then
    Activate_Window($Fritz7_InfoFenster2_Title) ;
    ControlClick($Fritz7_InfoFenster2_Title, "&Schließen", "[ID:1]")
    EndIf
    WinWaitClose($Fritz7_InfoFenster2_Title,"",5000)
    Send("^n") ;neue Partie
    WinSetOnTop("Neue Partie", "", 1)
    WinMove("Neue Partie", "", @DesktopWidth / 2 - 720 / 2, 80, 720, 1000)
    WinActivate("Neue Partie")
    Send("!{F2}") ;Daueranalyse aktivieren
    Endfunc
    ; Fritz7_starten
    ; -----------------------------------
    ; Activate_Window
    ; -----------------------------------
    Func Activate_Window($i)
    WinActivate($i)
    WinWaitActive($i)
    WinSetOnTop($i, "", 1)
    Endfunc
    ; Activate_Window
    ; -----------------------------------

    [/autoit]

    10 Mal editiert, zuletzt von m47 (17. Oktober 2015 um 03:26)

  • Sieht schonmal vielversprechend aus, mag leider kein Schach aber ich habs mal meinem Bro zum testen gemail, du hörst dann noch von mir ;-)...allerdings würde ich dich bitten, in Zukunft AutoIt-code in den dafür vorgesehenen (autoit) bzw. (/autoit)-Tags zu schreiben (natürlich mit eckiger klammer)...der Butten dafür befindet sich ganz rechts, der mit dem AutoIt-Logo...und den eines weiter links solltest du auch benutzen sobald der Code mehr als 10 Zeilen Code enthält, das macht das ganze übersichtlicher...

    Edit: Habe die kommentare leider nicht gesehen (bin mich schon zu sehr ans grüne gewöhnt), sorry.

    Bild1: Ich beim debuggen

    Einmal editiert, zuletzt von General Kaboom (18. Oktober 2011 um 10:14)

  • gewöhne dir doch an, deinen Code IMMER zu kommentieren, das macht es auch für dich leichter

    Öh, der Code ist doch ausreichend kommentiert. Alles was man nicht wissen kann, wenn man dieses Scachprogramm nicht bestitzt, ist erklärt (die Tastenkombinationen). Mehr braucht man doch wirklich nicht. Da geht nur die Übersicht flöten...

    • Offizieller Beitrag

    gewöhne dir doch an, deinen Code IMMER zu kommentieren


    Ich habe bereits mehrfach diese Bemerkung von dir gesehen. Grundsätzlich richtig, jedoch sollte man so etwas nur anmahnen, wo es notwendig ist. In einem Skript, dass sich in all seinen Befehlen eindeutig selbst erklärt, ist dieser Hinweis fehl am Platz.
    Solltest du Probleme haben, das Skript zu verstehen, bist du möglicherweise noch nicht erfahren genug dabei Hilfe zu leisten. ;)

  • Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.0
    Author: m47
    Version: 1.1
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    ; Script Start - Add your code below here
    $Fritz7_Title = "Fritz 7"
    $Fritz7_Class = "[CLASS:Afx:400000:0]"
    $Fritz7_InfoFenster1_Title = "Info"
    $Fritz7_InfoFenster1_Class = "[CLASS:#32770]"
    $Fritz7_InfoFenster2_Title = "Technische Meldungen" ;bei Houdini
    $Fritz7_InfoFenster2_Class = "[CLASS:#32770]"
    $Fritz7_InfoFenster3_Title = "Fritz 7" ;bei HIARCS
    $Fritz7_InfoFenster3_Class = "[CLASS:#32770]"
    $Startzeit_Fritz7_oeffnen = TimerInit()
    If ProcessExists("Houdini_20_w32.exe") Or ProcessExists("ChessProgram7.exe") Then
    While 1
    If ProcessExists("Houdini_20_w32.exe") Then
    $PID = ProcessClose("Houdini_20_w32.exe")
    If $PID Then ProcessClose($PID)
    ElseIf ProcessExists("ChessProgram7.exe") Then
    $PID = ProcessClose("ChessProgram7.exe")
    If $PID Then ProcessClose($PID)
    ElseIf ProcessExists("Hiarcs13.1MP.exe") Then
    $PID = ProcessClose("Hiarcs13.1MP.exe")
    If $PID Then ProcessClose($PID)
    ElseIf ProcessExists("Deep Rybka 4.1 w32.exe") Then
    $PID = ProcessClose("Deep Rybka 4.1 w32.exe")
    If $PID Then ProcessClose($PID)
    Else
    ExitLoop
    EndIf
    WEnd
    ToolTip("Fritz7 GUI closed in " & Round(TimerDiff($Startzeit_Fritz7_oeffnen)/1000, 1) & " seconds", @DesktopWidth/2, @DesktopHeight/2)
    Else
    Fritz7_starten() ;
    ToolTip("Fritz7 GUI opened in " & Round(TimerDiff($Startzeit_Fritz7_oeffnen)/1000, 1) & " seconds", @DesktopWidth/2, @DesktopHeight/2)
    EndIf
    Sleep(2000)
    ; Fritz7_starten
    ; -----------------------------------
    Func Fritz7_starten()
    Run("G:\ChessBase\Fritz7\ChessProgram7.exe", "G:\ChessBase\Fritz7\")
    WinWait($Fritz7_Class, "", 5000)
    Activate_Window($Fritz7_Title) ;
    Send("{SPACE 2}")
    $Timer = TimerInit()
    Do
    Sleep(20)
    Until ProcessExists("Houdini_20_w32.exe") <> 0 Or ProcessExists("Hiarcs13.1MP.exe") <> 0 Or ProcessExists("Deep Rybka 4.1 w32.exe") <> 0 Or TimerDiff($Timer) > 5000
    If ProcessExists("Houdini_20_w32.exe") Or ProcessExists("Deep Rybka 4.1 w32.exe") Then
    WinWait($Fritz7_InfoFenster2_Title, "", 5000)
    Activate_Window($Fritz7_InfoFenster2_Title) ;
    ControlClick($Fritz7_InfoFenster2_Title, "&Schließen", "[ID:1]")
    EndIf
    If ProcessExists("Hiarcs13.1MP.exe") Then
    WinWaitClose($Fritz7_InfoFenster3_Title, "Lade HIARCS", 5000)
    EndIf
    Send("^n") ;neue Partie
    WinSetOnTop("Neue Partie", "", 1)
    WinMove("Neue Partie", "", @DesktopWidth / 2 - 720 / 2, 80, 720, 1000)
    WinActivate("Neue Partie")
    Send("!{F2}") ;Daueranalyse aktivieren
    Endfunc
    ; Fritz7_starten
    ; -----------------------------------
    ; Activate_Window
    ; -----------------------------------
    Func Activate_Window($i)
    WinSetOnTop($i, "", 1)
    WinActivate($i)
    WinWaitActive($i)
    Endfunc
    ; Activate_Window
    ; -----------------------------------

    [/autoit]