Für Schachfreunde stelle ich mein Fritz14 Script zur Verfügung.
Damit kann ich mein Schachprogramm in ~3 Sekunden starten.
Brettfenster, Datenbankfenster und Datenbank-laden-Fenster werden permanent auf die vorgegebenen Koordinaten geschoben.
4 Fritz Layouts können automatisch geladen werden:
Bildschirm Links(Halbbild)
Bildschirm Rechts(Halbbild)
Bildschirm Mitte(Vollbild)
Bildschirm Media(Vollbild)
Bildschirm Links und Rechts ist nützlich wenn zbs. neben dem Schachprogramm ein Trainingsvideo(Windows Media Player, VLC Player, usw.) läuft.
Version 1.8
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.12.0
Author: m47
Version: 1.8
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <Misc.au3>
#include <Constants.au3>
Opt("MustDeclareVars", 1) ;1 = Variable muss deklariert werden
Opt("TrayMenuMode",1) ;1 = Tray Funktion Pause und Exit wird nicht gezeigt
Opt("SendKeyDelay", 0) ;Bestimmt die Länge der Anweisungspause zwischen dem Senden von Tastaturanschlägen. Ein Wert von 0 entfernt die Verzögerung komplett.
Global $Script_Name = "Fritz14"
Global $i
Global $Timer
Global $_0_bis_3[4] = [0,1,2,3]
Global $ProcessClose_ChessEngine
Global $ProcessClose_AutoIt3_x64
Global $WinGetPos_Fritz_Class_1
Global $TrayMsg
Global $SwitchWinmove = 1 ;1 = Winmove aktiviert ;0 = Winmove pausiert
Global $Winmove_Links = TrayCreateItem("Winmove Links")
Global $Winmove_Mitte = TrayCreateItem("Winmove Mitte")
Global $Winmove_Rechts = TrayCreateItem("Winmove Rechts")
Global $Winmove_Media = TrayCreateItem("Winmove Media")
Global $EIN_AUS_Media_Fenster = TrayCreateItem("EIN/AUS Media Fenster")
Global $EIN_AUS_Winmove = TrayCreateItem("EIN/AUS Winmove")
Global $Alles_Beenden = TrayCreateItem("Alles Beenden")
Global $WinList_Fritz_Class_1_GUI
Global $WinList_Winmove_Fritz_GUI
If _Singleton($Script_Name,1) = 0 Then
Sound() ;
Exit
EndIf
;Fritz14
Dim $Fritz_Path = "C:\Program Files\ChessBase\ChessProgram14\"
Dim $Fritz_exe = "ChessProgram14.exe"
;Window[Fritz14_offline/Fritz14_online/Database/Exit]
Dim $Fritz_Title_1 = "Deep Fritz 14"
Dim $Fritz_Class_1 = "[CLASS:Afx:0000000140000000:0]" ;Main_Window
Dim $Fritz_Class_1_ControlID = 59398 ;Loading Window
;Window[Select Database]
Dim $Fritz_Datenbank_auswaehlen = "Datenbank auswählen" ;Datenbank auswählen
;Window[Load Layout]
Dim $Fritz_Layout_laden = "Layout laden"
Dim $Fritz_Layout_laden_Edit = "[CLASS:Edit; INSTANCE:1]"
;Window[Media]
Dim $Fritz_Media = "[CLASS:AtlAxWin100; INSTANCE:1]"
;Tastenkombination
Dim $Tastenkombination_Media_Fenster_EIN_AUS = "^!v" ;CTRL+ALT+V
Dim $Tastenkombination_Layout_laden = "+^l" ;SHIFT+CTRL+L
;Process_ChessEngine
Dim $Process_ChessEngine[4]
$Process_ChessEngine[0] = "ChessProgram14.exe"
$Process_ChessEngine[1] = "Houdini_4_Pro_x64B.exe"
$Process_ChessEngine[2] = "stockfish-6-sse42.exe"
$Process_ChessEngine[3] = "komodo-8-64bit.exe"
;Process_AutoIt
Dim $Process_AutoIt = "AutoIt3_x64.exe"
;$WinMove_Fritz_Class_1
Dim $WinMove_Fritz_Class_1_x = 58
Dim $WinMove_Fritz_Class_1_y = 0
Dim $WinMove_Fritz_Class_1_width = 1862
Dim $WinMove_Fritz_Class_1_height = 1080
;$WinMove_Fritz_Datenbank_auswaehlen
;~ Dim $WinMove_Fritz_Datenbank_auswaehlen_x = 548
;~ Dim $WinMove_Fritz_Datenbank_auswaehlen_y = 268
;~ Dim $WinMove_Fritz_Datenbank_auswaehlen_width = 1000
;~ Dim $WinMove_Fritz_Datenbank_auswaehlen__height = 569
;Layout
Dim $Layout_LinksRechts = "LinksRechts.cblay{Enter}"
Dim $Layout_Mitte = "Mitte.cblay{Enter}"
Dim $Layout_Media = "Media.cblay{Enter}"
;Tooltip
Dim $Tooltip_Text[4]
$Tooltip_Text[0] = $Fritz_Title_1 & " GUI "
$Tooltip_Text[1] = "closed in "
$Tooltip_Text[2] = "opened in "
$Tooltip_Text[3] = " seconds"
Dim $Tooltip_Sleep_Delay = 1000 ;Millisekunden warten um die Tooltipanzeige aufrecht zu halten
;Start
Local $Tooltip_Timer_opened_closed = TimerInit()
TrayItemSetState($EIN_AUS_Winmove, $TRAY_CHECKED)
Fritz_Process_check() ;
Fritz_start() ;
Tooltip_opened_closed($Tooltip_Text[2]) ;
MouseClick("left",100,750,1,0)
While 1
If $SwitchWinmove = 1 Then
Check_Winmove_Fritz_GUI() ;
Sleep(20)
EndIf
$TrayMsg = TrayGetMsg() ;Tray
Select
Case $TrayMsg = 0
ContinueLoop
Case $TrayMsg = $Winmove_Links
$WinMove_Fritz_Class_1_x = 58
$WinMove_Fritz_Class_1_y = 0
$WinMove_Fritz_Class_1_width = 931
$WinMove_Fritz_Class_1_height = 1080
Lade_Layout_($Layout_LinksRechts) ;
TrayItemSetState($Winmove_Links, $TRAY_CHECKED)
TrayItemSetState($Winmove_Mitte, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Rechts, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Media, $TRAY_UNCHECKED)
Sound() ;
Case $TrayMsg = $Winmove_Mitte
$WinMove_Fritz_Class_1_x = 58
$WinMove_Fritz_Class_1_y = 0
$WinMove_Fritz_Class_1_width = 1862
$WinMove_Fritz_Class_1_height = 1080
Lade_Layout_($Layout_Mitte) ;
TrayItemSetState($Winmove_Links, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Mitte, $TRAY_CHECKED)
TrayItemSetState($Winmove_Rechts, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Media, $TRAY_UNCHECKED)
Sound() ;
Case $TrayMsg = $Winmove_Rechts
$WinMove_Fritz_Class_1_x = 989
$WinMove_Fritz_Class_1_y = 0
$WinMove_Fritz_Class_1_width = 931
$WinMove_Fritz_Class_1_height = 1080
Lade_Layout_($Layout_LinksRechts) ;
TrayItemSetState($Winmove_Links, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Mitte, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Rechts, $TRAY_CHECKED)
TrayItemSetState($Winmove_Media, $TRAY_UNCHECKED)
Sound() ;
Case $TrayMsg = $Winmove_Media
$WinMove_Fritz_Class_1_x = 58
$WinMove_Fritz_Class_1_y = 0
$WinMove_Fritz_Class_1_width = 1862
$WinMove_Fritz_Class_1_height = 1080
Lade_Layout_($Layout_Media) ;
TrayItemSetState($Winmove_Links, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Mitte, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Rechts, $TRAY_UNCHECKED)
TrayItemSetState($Winmove_Media, $TRAY_CHECKED)
Sound() ;
Case $TrayMsg = $EIN_AUS_Media_Fenster
WinActivate($WinList_Fritz_Class_1_GUI[1][1])
If ControlCommand($WinList_Fritz_Class_1_GUI[1][1], "", $Fritz_Media, "IsVisible") Then
TrayItemSetState($EIN_AUS_Media_Fenster, $TRAY_UNCHECKED)
;~ Consolewrite("AUS"&@LF)
Else
TrayItemSetState($EIN_AUS_Media_Fenster, $TRAY_CHECKED)
;~ Consolewrite("EIN"&@LF)
EndIf
Send($Tastenkombination_Media_Fenster_EIN_AUS)
Sound() ;
Case $TrayMsg = $EIN_AUS_Winmove
If $SwitchWinmove = 1 Then
$SwitchWinmove = 0
TrayItemSetState($EIN_AUS_Winmove, $TRAY_UNCHECKED)
Else
$SwitchWinmove = 1
TrayItemSetState($EIN_AUS_Winmove, $TRAY_CHECKED)
EndIf
Sound() ;
Case $TrayMsg = $Alles_Beenden
Sound() ;
Fritz_Process_check() ;
Exit
EndSelect
WEnd
Exit
;Ende
;Funktionen
Func Fritz_Process_check()
For $i In $_0_bis_3
If ProcessExists($Process_ChessEngine[$i]) Then
While 1
If ProcessExists($Process_ChessEngine[$i]) Then
$ProcessClose_ChessEngine = ProcessClose($Process_ChessEngine[$i])
If $ProcessClose_ChessEngine Then ProcessClose($ProcessClose_ChessEngine)
ElseIf ProcessExists($Process_AutoIt) Then
$ProcessClose_AutoIt3_x64 = ProcessClose($Process_AutoIt)
If $ProcessClose_AutoIt3_x64 Then ProcessClose($ProcessClose_AutoIt3_x64)
;~ Else
;~ Tooltip_opened_closed($Tooltip_Text[1]) ;
;~ Exit
EndIf
WEnd
EndIf
Next
Endfunc
Func Fritz_start()
BlockInput(1) ;Sperrt Eingaben des Users
Run($Fritz_Path & $Fritz_exe, $Fritz_Path)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Timer = TimerInit()
Do
Exit_Timer(5000) ;
Until WinExists($Fritz_Class_1)
WinSetOnTop($Fritz_Title_1, "", 1)
Activate_Window($Fritz_Title_1) ;
Send("{SPACE 2}") ;dadurch wird beim Anmeldefenster die "Deep Fritz (Offline)" Auswahl betätigt
$Timer = TimerInit()
Do
Exit_Timer(5000) ;
Until ControlCommand($Fritz_Class_1, "", $Fritz_Class_1_ControlID, "IsVisible") ;solange warten bis ControlID 59398 sichtbar ist
$WinList_Fritz_Class_1_GUI = WinList($Fritz_Class_1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Winmove_Fritz_GUI() ;
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];~ Send("^n") ;neue Partie
;~ Activate_Window("Neue Partie") ;
;~ Send("!{F2}") ;Daueranalyse aktivieren
BlockInput(0) ;Entsperrt Eingaben des Users
Endfunc
Func Tooltip_opened_closed($i)
ToolTip($Tooltip_Text[0] & $i & Round(TimerDiff($Tooltip_Timer_opened_closed)/1000, 1) & $Tooltip_Text[3], @DesktopWidth/2, @DesktopHeight/2)
Sleep($Tooltip_Sleep_Delay)
ToolTip("")
Sound() ;
Endfunc
Func Check_Winmove_Fritz_GUI()
$WinGetPos_Fritz_Class_1 = WinGetPos($Fritz_Class_1)
If @error Then
Sound() ;
Fritz_Process_check() ;
Exit
EndIf
If $WinGetPos_Fritz_Class_1[0] <> $WinMove_Fritz_Class_1_x Or $WinGetPos_Fritz_Class_1[1] <> $WinMove_Fritz_Class_1_y Or $WinGetPos_Fritz_Class_1[2] <> $WinMove_Fritz_Class_1_width Or $WinGetPos_Fritz_Class_1[3] <> $WinMove_Fritz_Class_1_height Then
Winmove_Fritz_GUI() ;
EndIf
Endfunc
Func Winmove_Fritz_GUI()
$WinList_Winmove_Fritz_GUI = WinList($Fritz_Class_1)
For $i = 1 To $WinList_Winmove_Fritz_GUI[0][0]
WinMove($WinList_Winmove_Fritz_GUI[$i][1], "",$WinMove_Fritz_Class_1_x, $WinMove_Fritz_Class_1_y, $WinMove_Fritz_Class_1_width, $WinMove_Fritz_Class_1_height)
Next
;~ WinMove($Fritz_Datenbank_auswaehlen, "",$WinMove_Fritz_Datenbank_auswaehlen_x, $WinMove_Fritz_Datenbank_auswaehlen_y, $WinMove_Fritz_Datenbank_auswaehlen_width, $WinMove_Fritz_Datenbank_auswaehlen__height)
Endfunc
Func Lade_Layout_($i)
$SwitchWinmove = 1
TrayItemSetState($EIN_AUS_Winmove, $TRAY_CHECKED)
Check_Winmove_Fritz_GUI() ;
Local $WinGetPos_Fritz_Class_1_GUI = WinGetPos($WinList_Fritz_Class_1_GUI[1][1])
If $WinGetPos_Fritz_Class_1_GUI[0] <> $WinMove_Fritz_Class_1_x Or $WinGetPos_Fritz_Class_1_GUI[1] <> $WinMove_Fritz_Class_1_y Or $WinGetPos_Fritz_Class_1_GUI[2] <> $WinMove_Fritz_Class_1_width Or $WinGetPos_Fritz_Class_1_GUI[3] <> $WinMove_Fritz_Class_1_height Then
WinMove($WinList_Fritz_Class_1_GUI[1][1], "",$WinMove_Fritz_Class_1_x, $WinMove_Fritz_Class_1_y, $WinMove_Fritz_Class_1_width, $WinMove_Fritz_Class_1_height)
EndIf
If $i = $Layout_Media Then
WinActivate($WinList_Fritz_Class_1_GUI[1][1])
If Not ControlCommand($WinList_Fritz_Class_1_GUI[1][1], "", $Fritz_Media, "IsVisible") Then
Send($Tastenkombination_Media_Fenster_EIN_AUS)
TrayItemSetState($EIN_AUS_Media_Fenster, $TRAY_CHECKED)
EndIf
Else
WinActivate($WinList_Fritz_Class_1_GUI[1][1])
If ControlCommand($WinList_Fritz_Class_1_GUI[1][1], "", $Fritz_Media, "IsVisible") Then
Send($Tastenkombination_Media_Fenster_EIN_AUS)
TrayItemSetState($EIN_AUS_Media_Fenster, $TRAY_UNCHECKED)
EndIf
EndIf
Do
Activate_Window($WinList_Fritz_Class_1_GUI[1][1])
Send($Tastenkombination_Layout_laden)
Until WinExists($Fritz_Layout_laden)
Activate_Window($Fritz_Layout_laden)
WinSetOnTop($Fritz_Layout_laden, "", 1)
ControlSend($Fritz_Layout_laden,"",$Fritz_Layout_laden_Edit,$i)
Endfunc
Func Activate_Window($i)
WinActivate($i)
WinWaitActive($i)
Endfunc
Func Exit_Timer($i) ;sind zuletzt $i Millisekunden überschritten worden dann beende das Script
If TimerDiff($Timer) > $i Then
Sound() ;
Exit
EndIf
EndFunc
Func Sound()
Beep(200,200)
EndFunc