;RunDebugView() programName = Washtimer outputdebug, Line=%A_LineNumber% ProgramName= %programName% hide := 0 SetTimer, MinimizeToTray, 500 Gui, 2:Add, text,x100 vtxt_Now w250, Gui, 2:Add, Progress,x10 w330 h20 cBlue vProgress_Timer Gui, 2:Add, text,x10 y45 vtxt_StartTime w100, Gui, 2:Add, text,x255 y45 vtxt_EndTime w100, Gui, 2:Add, text,x135 y50 vtxt_Dauer w100, Menu, tray, NoStandard Menu, tray, add, WaschTimer neustart, neustart Menu, tray, add ; Creates a separator line. lang18 := "in die Ablage minimieren" lang19 := "Waschprogramm wählen" lang1 := "Counter zeigen" lang2 := "Counter verstecken" Menu, tray, add,%lang18% , hidetimer ;hide timer-verstecke Programmfenster Menu, tray, add, %lang19%, showtimer ;show timer-zeige Programmfenster Menu, tray, Disable, %lang18% Menu, Tray, Default, %lang19% Menu, tray, add Menu, tray, add, %lang1% , showcounter ;Counter zeigen Menu, tray, Disable, %lang1% Menu, tray, add, %lang2% , hidecounter ;Counter verstecken Menu, tray, Disable, %lang2% Menu, tray, add, Ende, GuiClose a := ( "Kochwäsche 95°,115 Buntwäsche 60°,120 Buntwäsche 40°,105 Buntwäsche 30°,105 Buntwäsche 30° kurz,50 Pflegeleicht 60°,90 Pflegeleicht 40°,75 Kleine Wäsche 30°,30 Feinwäsche 30°,45 Wolle 40°,40 Handwäsche,35 Test,1" ) ;Countdowntime := 0 IfExist, waschtimer.lst FileRead, a, waschtimer.lst getdata(a,"PB","RT") Gui, Add, GroupBox, y10 w340 h50, Waschmaschinenprogramme - Programm | zeit(min) Gui, Add, Edit, x20 y30 ReadOnly vMyEdit1 gOnFontChange w250 Gui, Add, Edit, x+0 ReadOnly vMyEdit2 gOnFontChange w50 Gui, Font, ,Webdings Gui, Add, Button, x+0 gOnBtn w20 h22s 0x8000, 6 Gui, Font, Gui, Add, ListView, HWNDhCombo1 w300 h90 x20 y+10 gOnCombo1 -Hdr AltSubmit, c1|c2 Gui, add, Button, x20 y70 gp5, +5 min Gui, add, Button, x+10 y70 gm5, -5 min Gui, add, Button, x+10 y70 gp15, +15 min Vorwäsche Gui, add, Button, x20 y120 gp1, Starte Gui, Add, text, x+5 y124 w200 vp1,gewähltes Programm Loop, % PB0 LV_Add("", PB%a_index%, RT%a_index%) LV_ModifyCol(1,240), LV_ModifyCol(2,40) ComboX( hCombo1 ) gosub,getRegData OnExit, ExitSub Return getRegData: wLogoff := "false" RegRead, wLogoff, HKEY_CURRENT_USER, Software\Waschtimer ,wLogoff If (wLogoff = "true") { RegRead, t, HKEY_CURRENT_USER, Software\Waschtimer , wprog RegRead, wtime, HKEY_CURRENT_USER, Software\Waschtimer , wtime RegRead, wstart, HKEY_CURRENT_USER, Software\Waschtimer , wstart RegRead, wdauer, HKEY_CURRENT_USER, Software\Waschtimer , wdauer If (wtime = "") { wLogoff = "false" }Else { FormatTime, anfang,%a_now%, yyyyMMddHHmm Countdowntime := wtime EnvSub, Countdowntime, %anfang%, Minutes Gui, 2:Show,NoActivate w350 , %t% Gosub,p1 } RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wLogoff,%wLogoff% } return neustart: RegDelete, HKEY_CURRENT_USER, Software\Waschtimer Reload Return exitsub: If ((A_ExitReason = "Shutdown") or (A_ExitReason = "logoff")) ;Shutdown Exit { Logoff := "true" RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wprog,%txt1% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wtime,%ende1% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wLogoff,%Logoff% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wstart,%start1% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Waschtimer,wdauer,%wdauer% } ExitApp Return m5: Countdowntime -= 5 If (Countdowntime < 5) Countdowntime := 5 t := txt1 . ": " . Countdowntime . " min" wdauer := Countdowntime Gui, Font, cgreen GuiControl, ,p1, %t% GuiControl, Font, p1 Gui, Font Return p5: Countdowntime += 5 t := txt1 . ": " . Countdowntime . " min" wdauer := Countdowntime Gui, Font, cRed GuiControl, ,p1, %t% GuiControl, Font, p1 Gui, Font Return p15: Countdowntime += 15 t := txt1 . ": " . Countdowntime . " min" wdauer := Countdowntime Gui, Font, cRed GuiControl, ,p1, %t% GuiControl, Font, p1 Gui, Font Return p1: Gui, Submit, NoHide Menu, tray, Disable, %lang19% Menu, tray, Enable, Counter verstecken Menu, tray, Default, Counter verstecken showTrayIcon("running") If (wLogoff <> "true") { GuiControlGet, hh,,p1 t := hh wLogoff := "false" } ; IfInString, hh, gewähltes Programm MsgBox, Bitte erst Programm auswählen! Else Gosub,secW Return secW: Gui, Destroy Gosub, setwtime Gosub, shutdowncounter Return setwtime: SetFormat, Float, 2.0 If (wLogoff = "true") { start := wstart . "00" ende := wtime . "00" start1 := wstart . "00" ende1 := wtime . "00" } else{ start := a_now ende := a_now ende += Countdowntime, Minutes ende1 := ende start1 := start wdauer := Countdowntime } FormatTime, ende,%ende%, HH:mm FormatTime, ende1,%ende1%, yyyyMMddHHmm FormatTime, start1,%start1%, yyyyMMddHHmm FormatTime, start,%start%, HH:mm Counter := Countdowntime tic := 60000 ; 1 min SetTimer, ShutdownCounter, %tic% Return shutdowncounter: x = FormatTime, uhrzeit, %a_now% ,dd.MM.yyyy HH:mm Count := Counter*100/wdauer ; Countdowntime x:=Counter/1000 GuiControl,2:,Progress_Timer, %Count% GuiControl,2:,txt_StartTime,Start : %start% Uhr GuiControl,2:,txt_EndTime,Ende : %ende% Uhr GuiControl,2:,txt_Dauer,Dauer : %Counter% min GuiControl,2:,txt_Now,Aktuelle Zeit: %uhrzeit% Counter -= 1 If (hide = 0 ) Gui, 2:Show,NoActivate w350 , %t% If (Count = 0 ){ Progress, off Loop, 3 SoundPlay, gong.mp3 ,1 Gosub, timerende } If (Count <= 0 ){ Progress, off Gosub, timerende } Return timerende: Gosub, showcounter Gui, 2:Font, cRed GuiControl, 2:Font, txt_Dauer Gui, Font Menu, Tray, Default, WaschTimer neustart showTrayIcon("ended") Return hidetimer: Gui, Submit, NoHide WinActivate,WaschTimer WinHide,WaschTimer Menu, tray, Disable, %lang19% Menu, tray, Enable, %lang18% Menu, Tray, Default,%lang18% Return hidecounter: Gui, Submit, NoHide WinActivate,%t% WinHide,%t% hide := 1 Menu, tray, Enable, Counter zeigen Menu, tray, Default, Counter zeigen Menu, tray, Disable, Counter verstecken ;zeige Programmfenster Return showcounter: Gui, Submit, NoHide Gui, 2:Show , w350, %t% hide := 0 Menu, tray, Disable, Counter zeigen ;zeige Programmfenster Menu, tray, Enable, Counter verstecken Menu, Tray, Default, Counter verstecken Return showtimer: Gui, Submit, NoHide Gui, Show, ,WaschTimer Menu, tray, Disable, %lang18% ;zeige Programmfenster Menu, tray, Enable, %lang19% Menu, Tray, Default, %lang19% Return MinimizeToTray: CoordMode, Mouse, Screen MouseGetPos, , , id, Control WinGetTitle, title, ahk_id %id% MouseGetPos, xm, ym, hWnd Mousearea := NCHITTEST(xm, ym, hWnd) If title = %t% IfWinActive, %t% If (Mousearea = "CLIENT") { KeyWait, LButton, D Gosub,hidecounter } Return OnBtn: ComboX_Show( hCombo1 ) Return OnFontChange: Return OnCombo1: if LV_GetNext() > 0 If (A_GuiEvent="Normal") or ((A_GuiEvent="K") and (A_EventInfo=32)) { LV_GetText(txt1, LV_GetNext()), LV_GetText(txt2, LV_GetNext(), 2) GuiControl, ,MyEdit1, %txt1% GuiControl, ,MyEdit2, %txt2% Countdowntime := txt2 wdauer := txt2 Gui, Font GuiControl, ,p1, %txt1% : %txt2% min GuiControl, Font, p1 ComboX_Hide(hCombo1) } Return 2GuiEscape: ;2GuiClose: GuiEscape: GuiClose: RegDelete, HKEY_CURRENT_USER, Software\Waschtimer ExitApp NCHITTEST(x, y, hWnd) { SendMessage, 0x84, 0, (x & 0xFFFF) | (y & 0xFFFF) << 16,, ahk_id %hWnd% ErrorLevel >= 0 ? RegExMatch("NOWHERE CLIENT Caption SysMenu SIZE Menu HScroll VScroll MINButton MAXButton LEFT Right TOP TOPLEFT TOPRight Bottom BottomLEFT BottomRight Border OBJECT Close HELP", "(?:\w+\s+){" . ErrorLevel . "}(?\w+\b)", HT) : ErrorLevel = -1 ? HTAREA:="Transparent" : HTAREA:="Error" Return HTAREA } getdata(gd_data,gd_x1="",gd_x2="",gd_x3="",gd_x4="",gd_x5="",gd_x6="") { global zz := "`n" StringReplace, gd_data, gd_data, `r`n,`n, All Loop, % StrLen(gd_data) { pos := InStr(gd_data,zz ,"false","0") If StrLen(gd_data) = pos StringTrimRight, gd_data, gd_data, 1 Else Break } StringSplit gd_d,gd_data,`n index1 := 0 Loop,%gd_d0% { index1 += 1 StringSplit gd_dl,gd_d%index1%,`, loop, %gd_dl0% { s := gd_x%a_index% %s%%index1% := gd_dl%a_index% } } loop, %gd_dl0% { s := gd_x%a_index% %s%0 := gd_d0 } } ; getdata(data,x,y) ; { ; global ; zz := "`n" ; StringReplace, data, data, `r`n,`n, All ; Loop, % StrLen(data) ; { ; pos := InStr(data,zz ,"false","0") ; If StrLen(data) = pos ; StringTrimRight, data, data, 1 ; Else ; Break ; } ; ; StringSplit d,data,`n ; %x%0:=d0 ; %y%0:=d0 ; Loop,% d0 ; { ; StringSplit dx,d%a_index%,`, ; %x%%a_index% := dx1 ; %y%%a_index% := dx2 ; } ; } showTrayIcon(status) { if A_IsCompiled if (status = "ended") Loop, 60{ Menu, Tray, Icon,%A_ScriptName% ,3, 0 Sleep, 500 Menu, Tray, Icon,%A_ScriptName% ,, 0 Sleep, 500 } else if (status = "running") Menu, Tray, Icon,%A_ScriptName% ,4, 0 else if (status = "idle") Menu, Tray, Icon,%A_ScriptName% ,, 0 } #IfWinActive #Include ComboX.ahk