-
Notifications
You must be signed in to change notification settings - Fork 0
/
zegar.au3
121 lines (107 loc) · 4.77 KB
/
zegar.au3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <Date.au3>
; szerokość okna i labela zmienia się w zależności od dnia tygodnia, nazwy dni tygodnia mają różną długość
; wartości dobrane są poprzez eksperymentalne sprawdzenie odpowiedniej szerokości
; Długość okna dopasowana do dni tygodnia w języku polskim
;Global $DaysOfWeek_WinWidth[8] = ["None", "250", "187", "177", "212", "180", "190", "212"]
; Długość okna dopasowana do dni tygodnia w języku angielskim
Global $DaysOfWeek_WinWidth[8] = ["None", "210", "215", "253", "225", "190", "221", "207"]
;MsgBox(1, "", $DaysOfWeek[_DateToDayOfWeekISO(@YEAR,@MON,@MDAY)])
Global $Day_of_the_week_number = _DateToDayOfWeekISO(@YEAR,@MON,@MDAY); numer dnia tygodnia
Global $memoDay_of_the_week_number;
Global $Win_Width = $DaysOfWeek_WinWidth[$Day_of_the_week_number];
Global $Win_Height = 25;
Global $Scr_Width = 1920;1080;
Global $Scr_Height = 1080;1920;
Global $Scr_Orientation; = "Horizontal"; "Vertical"
$Scr_Orientation = InputBox("Screen orientation", "Enter the screen orientation: (Cancel or other than Horizontal means Vertical): ", _
"Horizontal","", 200, 155)
If $Scr_Orientation <> "Horizontal" Then
$Scr_Orientation = "Vertical"
EndIf
If $Scr_Orientation ="Horizontal" Then
$Scr_Width = 1920;1080;
$Scr_Height = 1080;1920;
ElseIf $Scr_Orientation = "Vertical" Then
$Scr_Width = 1080;
$Scr_Height = 1920;
EndIf
; wyświetla nazwę dnia tygodnia po polsku
;Global $DaysOfWeek[8] = ["None", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota", "niedziela"]
Global $DaysOfWeek[8] = ["None", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
Example()
Func Example()
Global $hwndGUI
$hwndGUI = GUICreate("",$Win_Width,$Win_Height,$Scr_Width/2-$Win_Width/2,$Scr_Height-$Win_Height,$WS_POPUP) ; will create a dialog box that when displayed is centered
GUISetBkColor(0x000000)
GUISetFont(18, 300)
WinSetOnTop($hwndGUI, "", $WINDOWS_ONTOP)
WinSetTrans($hwndGUI,"", 200)
$Label = GUICtrlCreateLabel("Hello", 5, 0, $Win_Width-5, $Win_Height)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
; Loop until the user exits.
Global $flaga=0
While 1
$idMsg = GUIGetMsg()
; Get current system time
$tCur = _Date_Time_GetLocalTime()
; Jeśli zmienił się dzień tygodnia w trakcie działania programu to trzeba zmienić rozmiar okna i rozmiar etykiety
$memoDay_of_the_week_number = $Day_of_the_week_number;
$Day_of_the_week_number = _DateToDayOfWeekISO(@YEAR,@MON,@MDAY); numer dnia tygodnia
If ($Day_of_the_week_number<>$memoDay_of_the_week_number) Then
;Zmiana rozmiaru okna zmienia także pozycję jego środka
;Sprawdzam czy okno znajduje się aktualnie przy krawędzi ekranu
$WinPos = WinGetPos($hwndGUI)
If ($WinPos[0]=$Scr_Width-$Win_Width) Then
; Okno znajduje się przy krawędzi
$Win_Width = $DaysOfWeek_WinWidth[$Day_of_the_week_number];
WinMove($hwndGUI, "", $Scr_Width-$Win_Width, $Scr_Height-$Win_Height, $Win_Width, $Win_Height);
Else
; Okno znajduje się na środku
$Win_Width = $DaysOfWeek_WinWidth[$Day_of_the_week_number];
WinMove($hwndGUI, "", $Scr_Width/2-$Win_Width/2, $Scr_Height-$Win_Height, $Win_Width, $Win_Height);
EndIf
GUICtrlSetPos($Label, 5, 0, $Win_Width-5, Default);
EndIf
$time = _Date_Time_SystemTimeToTimeStr($tCur)
$tab = StringRegExp($time, "([0-9]{2}):([0-9]{2}):[0-9]{2}", 1)
$hour = $tab[0]
$mins = $tab[1]
Local $time
If $hour = "00" Then
$hour = "12"
$time = $hour&":"&$mins&" AM"
ElseIf $hour > "00" And $hour < "12" Then
$time = $hour&":"&$mins&" AM"
ElseIf $hour = 12 Then
$time = $hour&":"&$mins&" PM"
ElseIf $hour >= 13 Then
$hour = $hour - 12
If $hour >= 1 And $hour < 10 Then
$hour = "0"&$hour
EndIf
$time = $hour&":"&$mins&" PM"
EndIf
GUICtrlSetData($Label, $DaysOfWeek[$Day_of_the_week_number]&", "&$time)
$MousePos = MouseGetPos()
$WinPos = WinGetPos($hwndGUI)
If ($MousePos[0]>=$WinPos[0] And $MousePos[0]<=($WinPos[0]+$Win_Width) And _ ; '_' kontynuuje linię kodu w nowym wierszu
$MousePos[1]>=$WinPos[1] And $MousePos[1]<=($WinPos[1]+$Win_Height)) Then
WinMove($hwndGUI,"", $Scr_Width-$Win_Width, $Scr_Height-$Win_Height)
;$flaga = 1
EndIf
$MousePos = MouseGetPos()
$WinPos = WinGetPos($hwndGUI)
If ($MousePos[0]>=$WinPos[0] And $MousePos[0]<=($WinPos[0]+$Win_Width) And _
$MousePos[1]>=$WinPos[1] And $MousePos[1]<=($WinPos[1]+$Win_Height)) Then
WinMove($hwndGUI,"", $Scr_Width/2-$Win_Width/2, $Scr_Height-$Win_Height)
;$flaga = 0
EndIf
Sleep(500)
If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop
;Sleep(50)
WEnd
EndFunc ;==>Example