;-- TIME_STAMP 2018-11-26 02:25:30 v 0.1 ; User: Bitnugger ; Link: https://autoit.de/index.php?thread/86216-sehr-schnell-in-gui-schreiben/&postID=692506#post692506 ; verändert von Mücke mit mehreren GUI`s und tastenkürzeln #Region ;************ Includes ************ #include #include #include #include #EndRegion ;************ Includes ************ Global $Taste_Abbruch = "{ESC}" Global $Taste_Button = "+!b" ; Shift-Alt-B Global $Taste_Formular_Save = "+!s" ; Shift-Alt-S Global $ID_GUI_Start ; ID für die GUI beim Programm Start Global $ID_GUI_Warten ; ID für die GUI beim Warten auf PushButton Global $ID_GUI_Play ; ID für die GUI beim Stopuhr laufen Global $ID_GUI_Formular ; ID für die GUI beim Formular Global $GUI_Start_BG_Color = 0x000000 ; Schwarz ; GUI Background Color Global $GUI_Start_Font_Color = 0xffffff ; Weiss ; GUI Font Color Global $GUI_Warten_BG_Color = 0x0B3861 ; Blau ; GUI Background Color Global $GUI_Warten_Font_Color = 0xffffff ; Weiss ; GUI Font Color Global $GUI_Play_BG_Color = 0x868A08 ; Gelb ; GUI Background Color Global $GUI_Play_Font_Color = 0xffffff ; Weiss ; GUI Background Color Global $GUI_Formular_BG_Color = 0x8A0829 ; Rot ; GUI Background Color Global $GUI_Formular_Font_Color = 0xffffff ; Weiss ; GUI Background Color Global $Status = "Start" ; Programm Status Global $Status_GUI_Open = "" ; Welche GUI als letztes geöffnet wurde ; Timer: Deklarieren der Variable als global für den Timer Global $g_hTimer, $g_sTime, $g_iHours, $g_iMins, $g_iSecs, $g_iMilliSecs, $g_iTicks Global $g_iOldHours, $g_iOldMins, $g_iOldSecs, $g_iOldMilliSecs ; Timer: Deklarieren der Variable als global GUI Start für den Timer Global $ID_GUI_Play Global $g_iGuiBkColor = 0x000000 ; GUI Background Color Global $g_iLabelColor = 0xCDCDCD ; Label Frontfarbe Global $g_iLabelBkColor = $g_iGuiBkColor ; Label Background Color Global $idLabel_Play Global $aPosNum Global $aPosSpc Global $ixPos Global $iyPos Global $iwNum Global $ihNum Global $iwSpc Global $ihSpc Global $idLabelHours Global $idLabelMins Global $idLabelSecs Global $idLabelMilli Global $Player_Zeit HotKeySet($Taste_Abbruch, HotKeyPressed) ; Programm beenden HotKeySet($Taste_Button, HotKeyPressed) ; Shift-Alt-B HotKeySet($Taste_Formular_Save, HotKeyPressed) ; Shift-Alt-d ; GUI erstellen - aufrufen _GUI_Start() _GUI_Warten() _GUI_Play() _GUI_Formular() ; GUI erstellen - aufrufen GUISetState(@SW_HIDE) While 1 if $Status = "Play" and $Status_GUI_Open <> "Play" then GUISetState(@SW_HIDE) GUISetState(@SW_SHOW, $ID_GUI_Play) $Status_GUI_Open = "Play" ElseIf $Status = "Formular" and $Status_GUI_Open <> "Formular" then GUISetState(@SW_HIDE) GUISetState(@SW_SHOW, $ID_GUI_Formular) $Status_GUI_Open = "Formular" GUICtrlCreateLabel($Player_Zeit,0,0) ; Label erstellen GUICtrlSetColor(-1, $GUI_Warten_Font_Color) ; Label Frontfarbe ElseIf $Status = "Warten" and $Status_GUI_Open <> "Warten" then GUISetState(@SW_HIDE) GUISetState(@SW_SHOW, $ID_GUI_Warten) $Status_GUI_Open = "Warten" ElseIf $Status = "Start" and $Status_GUI_Open <> "Start" then GUISetState(@SW_HIDE) GUISetState(@SW_SHOW, $ID_GUI_Start) $Status_GUI_Open = "Start" EndIf ; Timer soll laufen auf dem Monitor IF $Status = "Play" and $Status_GUI_Open = "Play" then Sleep(44) ; Aktualisierungsinterval in ms _GetTime() ; Aktuelle Zeit holen If $g_iMilliSecs <> $g_iOldMilliSecs Then ; Prüfen ob MilliSecs sich verändert hat $g_iOldMilliSecs = $g_iMilliSecs ; Aktuelle Zeit in Alte zeit schreiben GUICtrlSetData($idLabelMilli, StringFormat('%03i', StringLeft($g_iMilliSecs, 3))) ; Zeit ausgeben --> Millisekunden gibt man normal 3-stellig (999) aus EndIf If $g_iSecs <> $g_iOldSecs Then ; Prüfen ob MilliSecs sich verändert hat $g_iOldSecs = $g_iSecs ; Aktuelle Zeit in Alte zeit schreiben GUICtrlSetData($idLabelSecs, StringFormat('%02i', $g_iSecs)) ; Zeit ausgeben EndIf If $g_iMins <> $g_iOldMins Then ; Prüfen ob MilliSecs sich verändert hat $g_iOldMins = $g_iMins ; Aktuelle Zeit in Alte zeit schreiben GUICtrlSetData($idLabelMins, StringFormat('%02i', $g_iMins)) ; Zeit ausgeben EndIf If $g_iHours <> $g_iOldHours Then ; Prüfen ob MilliSecs sich verändert hat $g_iOldHours = $g_iHours ; Aktuelle Zeit in Alte zeit schreiben GUICtrlSetData($idLabelHours, StringFormat('%02i', $g_iHours)) ; Zeit ausgeben EndIf EndIf ; Timer soll laufen auf dem Monitor WEnd Exit Func HotKeyPressed() Switch @HotKeyPressed ; The last hotkey pressed. Case $Taste_Button ; Button wurde gedrückt if $Status = "Start" then $Status = "Warten" ElseIf $Status = "Warten" then $Status = "Play" $g_hTimer = TimerInit() ; Startzeit merken ElseIf $Status = "Play" then $Status = "Formular" $Player_Zeit = $g_sTime ; Zeit vom Spieler merken EndIf Case $Taste_Formular_Save ;Formular Speichern wurde gedrückt If $Status = "Formular" then $Status = "Warten" Endif Case $Taste_Abbruch ;ESC wurde gedrückt Exit EndSwitch EndFunc func _GUI_Start() $ID_GUI_Start = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) ; GUI erstellen GUISetBkColor($GUI_Start_BG_Color, $ID_GUI_Start) ; GUI Background Color GUISetFont(20, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri", $ID_GUI_Start) ; GUI Schriftgröße und Art Einstellen GUICtrlCreateLabel("Button ==> [Alt]+[Shift]+B", 10, 10) ; Label erstellen GUICtrlSetColor(-1, $GUI_Start_Font_Color) ; Label Frontfarbe GUICtrlCreateLabel("Formulare speichern ==> [Alt]+[Shift]+S", 10, 50) ; Label erstellen GUICtrlSetColor(-1, $GUI_Start_Font_Color) ; Label Frontfarbe GUICtrlCreateLabel("Programmende ==> [ESC]", 10, 90) ; Label erstellen GUICtrlSetColor(-1, $GUI_Start_Font_Color) ; Label Frontfarbe GUICtrlCreateLabel("Weiter ==> Button", 10, 130) ; Label erstellen GUICtrlSetColor(-1, $GUI_Start_Font_Color) ; Label Frontfarbe GUISetState(@SW_SHOW) ; GUI anzeigen GUISetState(@SW_HIDE) ; GUI alle verstecken EndFunc Func _GUI_Warten() $ID_GUI_Warten = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) ; GUI erstellen GUISetBkColor($GUI_Warten_BG_Color, $ID_GUI_Warten) ; GUI Background Color GUISetFont(200, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri", $ID_GUI_Warten) ; GUI Schriftgröße und Art Einstellen Local $Text = "Start => Button" Local $idLabel = GUICtrlCreateLabel($Text, 0, 0) ; Label erstellen Local $aPos = ControlGetPos($ID_GUI_Warten, '', $idLabel) ; so viel Platz brauchen wir GUICtrlDelete($idLabel) ; Label Löschen Local $X = (@DesktopWidth/2) - ($aPos[2]/2) Local $Y = (@DesktopHeight/2)- ($aPos[3]/2) GUICtrlCreateLabel($Text,$X, $Y) ; Label erstellen GUICtrlSetColor(-1, $GUI_Warten_Font_Color) ; Label Frontfarbe GUISetState(@SW_SHOW) ; GUI anzeigen GUISetState(@SW_HIDE) ; GUI alle verstecken EndFunc Func _GUI_Play() ;$ID_GUI_Play = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) ; GUI erstellen ; GUISetBkColor($GUI_Play_BG_Color, $ID_GUI_Play) ; GUI Background Color ; GUISetFont(200, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri", $ID_GUI_Play) ; GUI Schriftgröße und Art Einstellen ; ; Local $Text = "Timer" ; Local $idLabel = GUICtrlCreateLabel($Text, 0, 0) ; Label erstellen ; Local $aPos = ControlGetPos($ID_GUI_Play, '', $idLabel) ; so viel Platz brauchen wir ; GUICtrlDelete($idLabel) ; Label Löschen ; Local $X = (@DesktopWidth/2) - ($aPos[2]/2) ; Local $Y = (@DesktopHeight/2)- ($aPos[3]/2) ; ; GUICtrlCreateLabel($Text,$X, $Y) ; Label erstellen ; GUICtrlSetColor(-1, $GUI_Play_Font_Color) ; Label Frontfarbe ; GUISetState(@SW_SHOW) ; GUI anzeigen ; GUISetState(@SW_HIDE) ; GUI alle verstecken $ID_GUI_Play = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) ; GUI erstellen $g_iGuiBkColor = 0x000000 ; GUI Background Color $g_iLabelColor = 0xCDCDCD ; Label Frontfarbe $g_iLabelBkColor = $g_iGuiBkColor ; Label Background Color GUISetBkColor($g_iGuiBkColor) ; GUI Background Color Einstellen GUISetFont(200, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri") ; GUI Schriftgröße und Art Einstellen $idLabel_Play = GUICtrlCreateLabel("00", 0, 0) ; Label erstellen $aPosNum = ControlGetPos($ID_GUI_Play, '', $idLabel_Play) ; so viel Platz brauchen wir für "00" GUICtrlDelete($idLabel_Play) ; Label Löschen $idLabel_Play = GUICtrlCreateLabel(" : ", 0, 0) ; Label erstellen $aPosSpc = ControlGetPos($ID_GUI_Play, '', $idLabel_Play) ; so viel Platz brauchen wir für " : " bzw. " . " GUICtrlDelete($idLabel_Play) ; Label Löschen $ixPos = (@DesktopWidth / 2) - (($aPosNum[2] * 4.5) + ($aPosSpc[2] * 3)) / 2 ; X-Position des ersten Labels $iyPos = (@DesktopHeight / 2) - ($aPosNum[3] / 2) ; Y-Position des ersten Labels $iwNum = $aPosNum[2] ; Breite der Labels mit "00" $ihNum = $aPosNum[3] ; Höhe der Labels mit "00" $iwSpc = $aPosSpc[2] ; Breite der Labels mit " : " bzw. " . " $ihSpc = $aPosSpc[3] ; Höhe der Labels mit " : " bzw. " . " $idLabelHours = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum) ; Uhrleabel erstellen für Stunde $ixPos += $iwNum + 1 ; Platzbedarf weiterzählen _CreateLabel(" : ", $ixPos, $iyPos, $iwSpc, $ihSpc) ; Label Zeichnen Seperator $ixPos += $iwSpc + 1 ; Platzbedarf weiterzählen $idLabelMins = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum) ; Uhrleabel erstellen für Minuten $ixPos += $iwNum + 1 ; Platzbedarf weiterzählen _CreateLabel(" : ", $ixPos, $iyPos, $iwSpc, $ihSpc) ; Label Zeichnen Seperator $ixPos += $iwSpc + 1 ; Platzbedarf weiterzählen $idLabelSecs = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum) ; Uhrleabel erstellen für Sekunden $ixPos += $iwNum + 1 ; Platzbedarf weiterzählen _CreateLabel(" . ", $ixPos, $iyPos, $iwSpc, $ihSpc) ; Label Zeichnen Seperator $ixPos += $iwSpc + 1 ; Platzbedarf weiterzählen $idLabelMilli = _CreateLabel("000", $ixPos, $iyPos, $iwNum * 1.5, $ihNum) ; Uhrleabel erstellen für Millisekunden $g_hTimer = TimerInit() ; Startzeit merken _GetTime() ; Aktuelle Zeit holen $g_iOldHours = $g_iHours ; Aktuelle Zeit in Alte zeit schreiben $g_iOldMins = $g_iMins ; Aktuelle Zeit in Alte zeit schreiben $g_iOldSecs = $g_iSecs ; Aktuelle Zeit in Alte zeit schreiben $g_iOldMilliSecs = $g_iMilliSecs ; Aktuelle Zeit in Alte zeit schreiben GUISetState(@SW_SHOW) ; GUI anzeigen GUISetState(@SW_HIDE) ; GUI alle verstecken EndFunc Func _GUI_Formular() $ID_GUI_Formular = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP) ; GUI erstellen GUISetBkColor($GUI_Formular_BG_Color, $ID_GUI_Formular) ; GUI Background Color GUISetFont(200, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri", $ID_GUI_Formular) ; GUI Schriftgröße und Art Einstellen Local $Text = "Formular" Local $idLabel = GUICtrlCreateLabel($Text, 0, 0) ; Label erstellen Local $aPos = ControlGetPos($ID_GUI_Formular, '', $idLabel) ; so viel Platz brauchen wir GUICtrlDelete($idLabel) ; Label Löschen Local $X = (@DesktopWidth/2) - ($aPos[2]/2) Local $Y = (@DesktopHeight/2)- ($aPos[3]/2) GUICtrlCreateLabel($Text,$X, $Y) ; Label erstellen GUICtrlSetColor(-1, $GUI_Warten_Font_Color) ; Label Frontfarbe GUISetState(@SW_SHOW) ; GUI anzeigen GUISetState(@SW_HIDE) ; GUI alle verstecken EndFunc ; Timer: Func _CreateLabel($sText, $x, $y, $w, $h) ; Text, left, top, width, height Local $idLabel_Play = GUICtrlCreateLabel($sText, $x, $y, $w, $h) ; Label erstellen und ID holen GUICtrlSetColor($idLabel_Play, $g_iLabelColor) ; Label Frontfarbe GUICtrlSetBkColor($idLabel_Play, $g_iLabelBkColor) ; Label Background Color Return $idLabel_Play ; Lable ID zurück geben EndFunc ;==>_CreateLabel Func _GetTime() $g_iTicks = TimerDiff($g_hTimer) ; Zeitunterschied zum $g_hTimer = Startzeit $g_iMilliSecs = StringRegExpReplace($g_iTicks, '.+\.(.+)', '\1') ; MilliSecs ermitteln _TicksToTime(Int($g_iTicks), $g_iHours, $g_iMins, $g_iSecs) ; Timer zerlegen in Hours:Mins:Secs $g_sTime = StringFormat("%02i : %02i : %02i . %03i", $g_iHours, $g_iMins, $g_iSecs, StringLeft($g_iMilliSecs, 3)) ; to Hours:Mins:Secs:MilliSecs EndFunc ;==>_GetTime ; Timer: