Le design est épuré au max, mais c'est comme la bonne mécanique, tout est sous le capot
Mode horloge, timer ou countdown options mm:ss ou hh:mm:ss
Alarme par beep-music ou fichier mp3 de l'utilisateur (mémorisation du dernier mp3 utilisé par clé reg)
Un seul bouton de commande pour démarrer, faire pause/reprise, arrêter l'alarme, la relancer
Réglage du temps avec la roulette de la souris (sur heures minutes et secondes) et flèches haut et bas
Double-clic pour masquer la fenêtre, clic pour la ramener
Menu contextuel custom
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Opt("WinTitleMatchMode", -2)
Opt("GuiOnEventMode", 1)
Opt("GUIResizeMode", 802) ;$GUI_DOCKALL
;~ $ico = "G:\Program Files\AutoIt3\Aut2Exe\Icons\clock.ico"
Global $gui, $start, $running , $stop, $ticks, $mus1 = 1, $masked = 0, $pos, $labels[6]
Global $context, $items[9][2], $cmexists = 0, $about, $smolgui = 1, $cdmode = 1, $oldmode
Global $timer_Gui, $timer_hour_in, $timer_min_in, $timer_btn_cancel
Global $timer_H="00", $timer_M="00", $timer_on, $timer_ring, $dir, $mp3on, $new_menu, $new
Global $mp3 = RegRead("HKEY_CURRENT_USER\Software\coundown", "Lastmp3")
$gui = GUICreate("Count Down", 220, 70, @desktopwidth/2-110, 10, $WS_POPUP, _
BitOr($WS_EX_CLIENTEDGE, $WS_EX_TOPMOST) )
GUISetBkColor(0x000000)
GuiSetFont(48, 600, 0, "Arial")
;~ If not @Compiled Then TraySetIcon($ico)
$labels[0] = GUICtrlCreateLabel("00", 0, 0, 85, 70, 2)
$labels[1] = GUICtrlCreateLabel(":", 85, 0, 15, 70)
$labels[2] = GUICtrlCreateLabel("00", 105, 0, 85, 70)
$labels[3] = GUICtrlCreateLabel(":", -20, 0, 15, 70)
$labels[4] = GUICtrlCreateLabel("00", -100, 0, 85, 70)
$labels[5] = GUICtrlCreateLabel("", -110, 0, 10, 70)
For $i = 0 to 5
GUICtrlSetOnEvent($labels[$i], "_Drag")
GUICtrlSetBkColor($labels[$i], $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor($labels[$i], 0xff0000)
Next
$start = GUICtrlCreateButton("", 200, 10, 10, 50)
GUICtrlSetBkColor(-1, 0x007700)
GUICtrlSetOnEvent(-1, "_ZeBouton")
GUISetState()
GUIRegisterMsg($WM_MOUSEWHEEL, "_SetZeTime")
GUIRegisterMsg($WM_COMMAND, "_MoveW")
_ContextMenuGui()
While 1
If $cdmode and $running = 0 Then
If _IsPressed("26") OR _IsPressed("28") Then _SetZeTime2()
EndIf
If _IsPressed("02") AND NOT WinExists("timer") Then _ContextMenu()
If $cmexists = 1 Then
_TextColor()
If NOT WinActive($context) Then
GUISetState(@SW_HIDE, $context)
$cmexists = 0
EndIf
EndIf
Sleep(10)
Wend
;==================================
Func _ContextMenu()
Local $b = GUIGetCursorInfo($gui)
For $i = 0 to 5
If $b[4] = $labels[$i] Then
Local $MPos = MouseGetPos()
WinMove($context, "", $MPos[0], $MPos[1])
GUISetState(@SW_SHOW, $context)
$cmexists = 1
Exitloop
EndIf
Next
EndFunc
Func _ContextMenuGui()
$context = GUICreate("context", 110, 180, -1, 20, BitOr($WS_BORDER, $WS_POPUP), _
BitOr($WS_EX_COMPOSITED, $WS_EX_TOOLWINDOW) )
GuiSetFont( -1, 400, 0, "Arial Unicode MS")
$items[0][0] = GUICtrlCreateLabel("", 5, 4, 10, 18)
$items[0][1] = GUICtrlCreateLabel(" Countdown Mode", 15, 4, 95, 18)
$items[1][0] = GUICtrlCreateLabel("", 25, 22, 10, 18)
$items[1][1] = GUICtrlCreateLabel(" mm:ss", 35, 22, 95, 18)
$items[2][0] = GUICtrlCreateLabel("", 25, 40, 10, 18)
$items[2][1] = GUICtrlCreateLabel(" hh:mm:ss", 35, 40, 95, 18)
$items[3][0] = GUICtrlCreateLabel("", 5, 58, 10, 18)
$items[3][1] = GUICtrlCreateLabel(" Clock Mode", 15, 58, 95, 18)
$items[7][0] = GUICtrlCreateLabel("", 5, 76, 10, 18)
$items[7][1] = GUICtrlCreateLabel(" Timer Mode", 15, 76, 95, 18)
GuiCtrlCreateLabel("", 0, 95, 110, 2, 0x1000) ; sep
$items[4][0] = GUICtrlCreateLabel("", 5, 100, 10, 18)
$items[4][1] = GUICtrlCreateLabel(" Alarme 1", 15, 100, 95, 18)
$items[5][0] = GUICtrlCreateLabel("", 5, 118, 10, 18)
$items[5][1] = GUICtrlCreateLabel(" Alarme 2", 15, 118, 95, 18)
$items[8][0] = GUICtrlCreateLabel("", 5, 136, 10, 18)
$items[8][1] = GUICtrlCreateLabel(" Fichier ...", 15, 136, 95, 18)
$new_menu = GUICtrlCreateContextMenu($items[8][1])
If $mp3 = "" Then
$new = GUICtrlCreateMenuItem("Nouveau mp3 ...", $new_menu)
Else
$new = GUICtrlCreateMenuItem($mp3, $new_menu)
EndIf
GUICtrlSetOnEvent($new, "_ContextMenuEvents")
GuiCtrlCreateLabel("", 0, 154, 110, 2, 0x1000) ; sep
$items[6][0] = GuiCtrlCreateLabel("", 5, 159, 10, 18)
$items[6][1] = GuiCtrlCreateLabel(" Exit", 15, 160, 95, 18)
For $i = 0 To 8
GUICtrlSetBkColor($items[$i][0], $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($items[$i][1], $GUI_BKCOLOR_TRANSPARENT)
GuiCtrlSetState($items[$i][0], $GUI_ONTOP)
GuiCtrlSetState($items[$i][1], $GUI_ONTOP)
GUICtrlSetOnEvent($items[$i][0], "_ContextMenuEvents")
GUICtrlSetOnEvent($items[$i][1], "_ContextMenuEvents")
Next
GuiCtrlSetData($items[0][0], ChrW(10003))
GuiCtrlSetData($items[1][0], ChrW(10003))
GuiCtrlSetData($items[4][0], ChrW(10003))
GuiCtrlSetData($items[6][0], ChrW(9786))
WinSetTrans($context, "", 240)
WinSetOnTop($context, "", 1)
GUISetState(@SW_HIDE, $context)
EndFunc
Func _ContextMenuEvents()
Switch @GUI_CtrlId
Case $items[0][1], $items[0][0] ; countdown mode
$cdmode = 1
_CheckZeCdOptions()
_CheckZeContextMenuItems()
_ToggleMode()
Case $items[1][1], $items[1][0] ; format mm:ss
GUICtrlSetData($items[1][0], ChrW(10003))
GUICtrlSetData($items[2][0], "")
$smolgui = 1
_ToggleMode()
Case $items[2][1], $items[2][0] ; format hh:mm:ss
GUICtrlSetData($items[2][0], ChrW(10003))
GUICtrlSetData($items[1][0], "")
$smolgui = 0
_ToggleMode()
Case $items[3][1], $items[3][0] ; clock mode
$cdmode = 0
_CheckZeCdOptions()
_CheckZeContextMenuItems()
_ToggleMode()
Case $items[7][1], $items[7][0] ; timer mode
$oldmode = $cdmode
$cdmode = 0
_ToggleMode()
GUISetState(@SW_HIDE, $context)
_ShowHideTimerGui()
Case $items[4][1], $items[4][0] ; alarme 1
GUICtrlSetData($items[4][0], ChrW(10003))
GUICtrlSetData($items[5][0], "")
GUICtrlSetData($items[8][0], "")
$mus1 = 1
$mp3on = 0
Case $items[5][1], $items[5][0] ; alarme 2
GUICtrlSetData($items[4][0], "")
GUICtrlSetData($items[5][0], ChrW(10003))
GUICtrlSetData($items[8][0], "")
$mus1 = 0
$mp3on = 0
Case $items[8][1], $items[8][0] ; fichier mp3
GUISetState(@SW_HIDE, $context)
If $mp3 <> "" Then
$mp3on = 1
GUICtrlSetData($items[4][0], "")
GUICtrlSetData($items[5][0], "")
GUICtrlSetData($items[8][0], ChrW(10003))
Else
ControlClick($context, "", $items[8][1], "right")
EndIf
Case $new
If $mp3 = "" Then
$dir = @DesktopDir
$name = ""
Else
$dir = StringRegExpReplace($mp3, '(.+)\\[^\\]+', "$1")
$name = StringRegExpReplace($mp3, '.+\\(.+)', "$1")
EndIf
$var = FileOpenDialog("Chouze your mp3...", $dir & "\", "ziques (*.mp3)", 1, $name)
If not @error Then
$dir = StringRegExpReplace($var, '(.+)\\[^\\]+', "$1")
$mp3 = $var
RegWrite("HKEY_CURRENT_USER\Software\coundown", "Lastmp3", "REG_SZ", $mp3)
GuiCtrlDelete($new)
$new = GUICtrlCreateMenuItem($mp3, $new_menu)
GUICtrlSetOnEvent($new, "_ContextMenuEvents")
$mp3on = 1
GUICtrlSetData($items[4][0], "")
GUICtrlSetData($items[5][0], "")
GUICtrlSetData($items[8][0], ChrW(10003))
EndIf
Case $items[6][0]
_About()
Case $items[6][1]
GuiDelete($context)
_Exit()
EndSwitch
GUISetState(@SW_HIDE, $context)
$cmexists = 0
EndFunc
Func _CheckZeContextMenuItems()
If $cdmode = 1 Then ; countdown mode
GUICtrlSetData($items[0][0], ChrW(10003))
GUICtrlSetData($items[3][0], "")
GUICtrlSetData($items[7][0], "")
Else
If $timer_on = 1 Then ; timer mode
GUICtrlSetData($items[0][0], "")
GUICtrlSetData($items[3][0], "")
GUICtrlSetData($items[7][0], ChrW(10003))
Else ; clock mode
GUICtrlSetData($items[0][0], "")
GUICtrlSetData($items[3][0], ChrW(10003))
GUICtrlSetData($items[7][0], "")
EndIf
EndIf
EndFunc
Func _RunZeTimer($wakeup)
If $wakeup <> "00:00" and $timer_on = 0 Then
$cdmode = 0
$timer_on = 1
_CheckZeCdOptions()
_CheckZeContextMenuItems()
_ToggleMode()
AdlibRegister("_CheckZeTimer", 1*1000)
Else
$cdmode = $oldmode
$timer_on = 0
_CheckZeContextMenuItems()
_ToggleMode()
AdlibUnRegister("_CheckZeTimer")
EndIf
EndFunc
Func _CheckZeTimer()
If $timer_H = @HOUR and $timer_M = @MIN Then
AdlibUnRegister("_CheckZeTimer")
GUICtrlSetBkColor($start, 0x770000)
If $masked = 1 Then _Move()
GUISetState(@SW_HIDE, $context)
$cmexists = 0
$timer_ring = 1
$stop = 0
GUIRegisterMsg($WM_COMMAND, "_StopAlarme")
_Play()
EndIf
EndFunc
Func _ShowHideTimerGui()
If NOT WinExists("timer") Then
$timer_Gui = GuiCreate("timer", 200, 60, 5, 74, $WS_POPUP, _
BitOR($WS_EX_TOOLWINDOW, $WS_EX_CLIENTEDGE, $WS_EX_MDICHILD), $gui)
GUISetBkColor(0x000000)
GuiCtrlCreateLabel("Heure de réveil (HH:MM)", 40, 10, 120, 18)
GUICtrlSetColor(-1, 0xffffff)
$timer_hour_in = GuiCtrlCreateInput($timer_H, 10, 30, 25, 18, 1)
GuiCtrlCreateLabel(" : ", 40, 30, 10, 18)
GUICtrlSetColor(-1, 0xffffff)
$timer_min_in = GuiCtrlCreateInput($timer_M, 50, 30, 25, 18, 1)
$timer_btn_ok = GuiCtrlCreateButton("OK", 100, 30, 30, 20)
GUICtrlSetOnEvent(-1, "_ShowHideTimerGui")
GUICtrlSetBkColor(-1, 0x008800)
GUICtrlSetColor(-1, 0xffffff)
$timer_btn_cancel = GuiCtrlCreateButton("Annuler", 140, 30, 50, 20)
GUICtrlSetOnEvent(-1, "_ShowHideTimerGui")
GUICtrlSetBkColor(-1, 0x880000)
GUICtrlSetColor(-1, 0xffffff)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $timer_Gui, "int", 400, "long", 0x00040004)
GuiSetState(@SW_SHOWNOACTIVATE)
Else
$timer_H = StringFormat("%02i", GuiCtrlRead($timer_hour_in))
$timer_M = StringFormat("%02i", GuiCtrlRead($timer_min_in))
If @GUI_CtrlId = $timer_btn_cancel Then
$timer_H = "00"
$timer_M = "00"
EndIf
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $timer_Gui, "int", 400, "long", 0x00050008)
GuiDelete($timer_Gui)
_RunZeTimer($timer_H & ":" & $timer_M)
EndIf
EndFunc
Func _TextColor()
$a = GUIGetCursorInfo($context)
For $i = 0 To 8
If $a[4] = $items[$i][1] OR $a[4] = $items[$i][0] Then
GUICtrlSetColor($items[$i][1], 0xff0000)
Else
GUICtrlSetColor($items[$i][1], 0x000000)
EndIf
Next
Sleep(10)
EndFunc
Func _CheckZeCdOptions()
If not $cdmode OR $running Then
GUICtrlSetState($items[1][0], $GUI_DISABLE)
GUICtrlSetState($items[2][0], $GUI_DISABLE)
GUICtrlSetState($items[1][1], $GUI_DISABLE)
GUICtrlSetState($items[2][1], $GUI_DISABLE)
Else
GUICtrlSetState($items[1][0], $GUI_ENABLE)
GUICtrlSetState($items[2][0], $GUI_ENABLE)
GUICtrlSetState($items[1][1], $GUI_ENABLE)
GUICtrlSetState($items[2][1], $GUI_ENABLE)
EndIf
EndFunc
Func _SmolGui()
WinMove($gui, "", Default, Default, 220)
GUICtrlSetPos($labels[0], 0, 0)
GUICtrlSetPos($labels[1], 85, 0)
GUICtrlSetPos($labels[2], 105, 0)
GUICtrlSetPos($labels[3], -20, 0)
GUICtrlSetPos($labels[4], -100, 0)
GUICtrlSetPos($labels[5], -110, 0)
GUICtrlSetPos($start, 200, 10)
EndFunc
Func _BigGui()
WinMove($gui, "", Default, Default, 220+90)
GUICtrlSetPos($labels[0], 95+0, 0)
GUICtrlSetPos($labels[1], 95+85, 0)
GUICtrlSetPos($labels[2], 95+105, 0)
GUICtrlSetPos($labels[3], 85, 0)
GUICtrlSetPos($labels[4], 10, 0)
GUICtrlSetPos($labels[5], 0, 0)
GUICtrlSetPos($start, 90+200, 10)
EndFunc
Func _ToggleMode()
If not $cdmode Then
_BigGui()
GUIRegisterMsg($WM_MOUSEWHEEL, "")
_RunZeClock()
AdlibRegister("_RunZeClock", 1000)
Else
AdlibUnRegister("_RunZeClock")
If $smolgui = 1 Then
_SmolGui()
Else
_BigGui()
EndIf
If $running = 0 Then
GUIRegisterMsg($WM_MOUSEWHEEL, "_SetZeTime")
$ticks = 0
EndIf
_Display()
EndIf
EndFunc
Func _RunZeClock()
GuiCtrlSetData($labels[4], @HOUR)
GuiCtrlSetData($labels[0], @MIN)
GuiCtrlSetData($labels[2], @SEC)
EndFunc
Func _Exit()
Exit DllCall("User32.dll", "long", "AnimateWindow", "hwnd", $gui, "long", 200, "long", 0x10010)
EndFunc
Func _ZeBouton()
If $running = 0 Then
GUIRegisterMsg($WM_MOUSEWHEEL, "")
If $timer_ring = 0 Then
GUIRegisterMsg($WM_COMMAND, "_StopAlarme")
GUICtrlSetBkColor($start, 0x770000)
If $ticks = 0 Then
_Update()
Else
AdlibRegister("_Update", 1000)
EndIf
Else
GUICtrlSetData($items[3][0], ChrW(10003))
GUICtrlSetData($items[7][0], "")
$running = 1
$timer_ring = 0
$timer_on = 0
GUIRegisterMsg($WM_COMMAND, "_MoveW")
EndIf
Else
GUIRegisterMsg($WM_COMMAND, "_MoveW")
If $cdmode = 1 Then GUIRegisterMsg($WM_MOUSEWHEEL, "_SetZeTime")
AdlibUnRegister("_Update")
EndIf
$running = not $running
_CheckZeCdOptions()
EndFunc
Func _Update()
$stop = 0
If $ticks > 0 Then $ticks -= 1
If $cdmode Then _Display()
If $ticks <= 0 Then
AdlibUnRegister("_Update")
If $masked = 1 Then _Move()
GUISetState(@SW_HIDE, $context)
$cmexists = 0
_Play()
If $cdmode = 1 Then GUIRegisterMsg($WM_MOUSEWHEEL, "_SetZeTime")
GUIRegisterMsg($WM_COMMAND, "_MoveW")
EndIf
EndFunc
Func _SetZeTime($hWnd,$iMsg, $iwParam, $ilParam)
#forceref $hwnd, $iMsg, $ilParam
Local $iDelta = BitShift($iwParam, 16), $a = GUIGetCursorInfo($gui)
If $iDelta > 0 and $a[4] = $labels[0] and $ticks < 86340 Then $ticks += 60
If $iDelta > 0 and $a[4] = $labels[2] and $ticks < 86399 Then $ticks += 1
If $iDelta < 0 and $a[4] = $labels[0] and $ticks >= 60 Then $ticks -= 60
If $iDelta < 0 and $a[4] = $labels[2] and $ticks > 0 Then $ticks -= 1
If $iDelta > 0 and $a[4] = $labels[4] and $ticks < 82800 Then $ticks += 3600
If $iDelta < 0 and $a[4] = $labels[4] and $ticks >= 3600 Then $ticks -= 3600
_Display()
; Sleep(100)
EndFunc
Func _SetZeTime2()
Local $a = GUIGetCursorInfo($gui)
If $a[4] = $labels[0] Or $a[4] = $labels[2] Or $a[4] = $labels[4] Then
While _IsPressed("26")
If $a[4] = $labels[4] and $ticks < 82800 Then $ticks += 3600
If $a[4] = $labels[0] and $ticks < 86340 Then $ticks += 60
If $a[4] = $labels[2] and $ticks < 86399 Then $ticks += 1
_Display()
Sleep(100)
Wend
While _IsPressed("28")
If $a[4] = $labels[4] and $ticks >= 3600 Then $ticks -= 3600
If $a[4] = $labels[0] and $ticks >= 60 Then $ticks -= 60
If $a[4] = $labels[2] and $ticks > 0 Then $ticks -= 1
_Display()
Sleep(100)
Wend
EndIf
EndFunc
Func _Display()
Local $sec, $min, $hr
$sec = Mod($ticks, 60)
$min = Mod($ticks/60, 60)
$hr = Mod($ticks/3600, 60)
GUICtrlSetData($labels[0], StringFormat("%02i", $min))
GUICtrlSetData($labels[2], StringFormat("%02i", $sec))
GUICtrlSetData($labels[4], StringFormat("%02i", $hr))
EndFunc
Func _StopAlarme($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg, $lParam
Switch BitAND($wParam, 0x0000FFFF)
Case $labels[0], $labels[1], $labels[2], $labels[3], $labels[4], $labels[5]
If BitShift($wParam, 16) = 1 Then _Move()
Case $start
$stop = 1
GUICtrlSetBkColor($start, 0x007700)
EndSwitch
Return 'GUI_RUNDEFMSG'
EndFunc
Func _Drag()
If $cmexists = 1 Then
GUISetState(@SW_HIDE, $context)
$cmexists = 0
EndIf
If $masked = 1 Then _Move()
Local $MousePos = MouseGetPos()
Local $hWndPos = WinGetPos($gui)
Local $WinPos[2]
$WinPos[0] = $MousePos[0]-$hWndPos[0]
$WinPos[1] = $MousePos[1]-$hWndPos[1]
Do
$hWndPos = MouseGetPos()
WinMove($gui, '', $hWndPos[0]-$WinPos[0], $hWndPos[1]-$WinPos[1])
Sleep(10)
Until not _IsPressed("01")
EndFunc
Func _MoveW($hWnd, $Msg, $wParam, $lParam) ;WM_COMMAND
#forceref $hWnd, $Msg, $lParam
Switch BitAND($wParam, 0x0000FFFF)
Case $labels[0], $labels[1], $labels[2], $labels[3], $labels[4], $labels[5]
If BitShift($wParam, 16) = 1 Then _Move() ; <= Double clic
EndSwitch
Return 'GUI_RUNDEFMSG'
EndFunc
Func _Move()
Local $speed = 30
If $masked = 0 Then
$pos = WinGetPos($gui)
For $p = $pos[0] to @desktopwidth-10
WinMove($gui, "", $p, Default)
If Mod($p, $speed) = 0 Then Sleep(1)
Next
Else
For $p = @desktopwidth-10 to $pos[0] step -1
WinMove($gui, "", $p, Default)
If Mod($p, $speed) = 0 Then Sleep(1)
Next
EndIf
$masked = not $masked
EndFunc
Func _About()
$about = GUICreate("Tchuss", 300, 100, -1, -1, BitOr($WS_BORDER, $WS_POPUP), $WS_EX_TOOLWINDOW)
GuiSetOnEvent($GUI_EVENT_PRIMARYDOWN, "_CloseAbout")
GuiSetFont(12, 400, 0, "Arial Unicode MS")
GuiCtrlCreateLabel("mikell was here " & ChrW(9835), 80, 20, 140, 20, 1)
GuiCtrlSetOnEvent(-1, "_CloseAbout")
GuiCtrlCreateLabel("http://www.autoitscript.fr/forum/", 40, 50, 220, 20, 1)
GUICtrlSetColor(-1, 0x0000ff)
GUICtrlSetFont(-1, -1, -1, 4)
GUICtrlSetCursor(-1, 0)
GuiCtrlSetOnEvent(-1, "_HaveALookAtZeForum")
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $about, "int", 300, "long", 0x00040010)
GUISetState()
EndFunc
Func _CloseAbout()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $about, "int", 300, "long", 0x00010010)
GuiDelete($about)
EndFunc
Func _HaveALookAtZeForum()
_CloseAbout()
ShellExecute("http://www.autoitscript.fr/forum/index.php")
EndFunc
Func _Play()
If $mp3on = 0 Then
_LoadZeMusic()
While $stop = 0
If $timer_ring = 1 Then $begin = TimerInit()
For $i = 0 To UBound($Notes)-1
_Beep($Notes[$i][0],$Notes[$i][1],$Notes[$i][2],$Notes[$i][3])
If $timer_ring = 1 and TimerDiff($begin)>1000 Then
_RunZeClock()
$begin = TimerInit()
EndIf
Next
Sleep(500)
Wend
Else
ShellExecute($mp3, "", "", "", @SW_HIDE)
Do
Sleep(10)
Until WinExists(".mp3")
$mp3win = WinGetHandle(".mp3")
If $timer_ring = 1 Then $begin = TimerInit()
While $stop = 0 and WinExists($mp3win)
If $timer_ring = 1 and TimerDiff($begin)>1000 Then
_RunZeClock()
$begin = TimerInit()
EndIf
Wend
$stop = 1
If WinExists($mp3win) Then WinClose($mp3win)
EndIf
EndFunc
Func _Beep($iNote,$iOctave=4,$iDuration=200,$iPause=0)
; par AZJIO (il est fou ce mec)
; http://www.autoitscript.com/forum/topic/115869-beep/
If $stop = 0 Then
$iFrequency=440*2^(($iNote+$iTone)/12+$iOctave+1/6-4)
Beep($iFrequency, $iDuration/$nTempo)
If $iPause<>0 Then Sleep($iPause/$nTempo)
Else
Return
EndIf
EndFunc
Func _LoadZeMusic()
If $mus1 = 1 Then
Global $nTempo=0.9, $iTone=0
Global $Notes[199][4] = [[8,4,100],[7,4,100],[8,4,100],[9,4,100],[8,4,100,100],[1,5,100,100],[8,4,100],[7,4,100], _
[8,4,100],[9,4,100],[8,4,100,100],[12,4,100,100],[8,4,100],[7,4,100],[8,4,100],[9,4,100],[8,4,100],[6,5,100], _
[3,5,100],[12,4,100],[8,4,100],[6,4,100],[5,4,100],[4,4,200,300],[1,5,100],[12,4,100],[11,4,100],[9,4,100], _
[1,5,100,100],[6,5,100,100],[4,5,100],[3,5,100],[1,5,100],[8,4,100],[1,5,100,100],[4,5,100,100],[4,5,100],[3,5,100], _
[1,5,100],[3,5,100],[3,4,100],[7,4,100],[10,4,100],[1,5,100],[4,5,100],[3,5,100],[1,5,100],[3,5,250,250], _
[8,4,100],[7,4,100],[8,4,100],[9,4,100],[8,4,100,100],[1,5,100,100],[8,4,100],[7,4,100],[8,4,100],[9,4,100], _
[8,4,100,100],[12,4,100,100],[8,4,100],[7,4,100],[8,4,100],[9,4,100],[8,4,100],[6,5,100],[3,5,100],[12,4,100], _
[8,4,100],[6,4,100],[5,4,100],[4,4,200,300],[1,5,100],[12,4,100],[11,4,100],[9,4,100],[1,5,100,100],[6,5,100,100], _
[4,5,100],[3,5,100],[1,5,100],[8,4,100],[1,5,100,100],[4,5,100,100],[4,5,100],[3,5,100],[1,5,100],[3,5,100], _
[8,4,100],[12,4,100],[3,5,100],[8,5,100],[6,5,100],[4,5,100],[3,5,100],[1,5,300,200],[3,5,100],[1,5,100], _
[12,4,100],[11,4,100],[4,4,100],[8,4,100],[11,4,100],[4,4,100],[8,4,100],[11,4,100],[12,4,100],[1,5,150,150], _
[9,4,200,100],[3,5,100],[1,5,100],[12,4,100],[11,4,100],[3,4,100],[6,4,100],[11,4,100],[3,4,100],[6,4,100], _
[11,4,100],[12,4,100],[1,5,150,150],[8,4,200,100],[4,5,100],[3,5,100],[6,5,100],[4,5,100],[3,5,100],[1,5,100], _
[4,5,100],[3,5,100],[1,5,100],[11,4,100],[3,5,150,150],[11,4,300,100],[3,5,100],[1,5,100],[4,5,100],[3,5,100], _
[1,5,100],[11,4,100],[3,5,100],[1,5,100],[11,4,100],[9,4,100],[11,4,400,100],[3,5,100],[1,5,100],[12,4,100], _
[11,4,100],[4,4,100],[8,4,100],[11,4,100],[4,4,100],[8,4,100],[11,4,100],[12,4,100],[1,5,150,150],[9,4,200,100], _
[3,5,100],[1,5,100],[12,4,100],[11,4,100],[3,4,100],[6,4,100],[11,4,100],[3,4,100],[6,4,100],[11,4,100], _
[12,4,100],[1,5,150,150],[8,4,150,150],[4,5,100],[3,5,100],[2,5,100],[1,5,100],[12,4,100],[1,5,100],[3,5,100], _
[6,5,100],[4,5,100],[3,5,100],[1,5,100],[4,5,100],[11,4,100],[4,5,100],[8,5,100],[11,5,100],[10,5,100], _
[9,5,100],[8,5,100],[6,5,100],[4,5,100],[3,5,100],[1,5,100],[11,4,100],[9,4,100],[8,4,100],[6,4,100],[4,4,200]]
Else
Global $nTempo=0.9, $iTone=-16
Global $Notes[271][4] = [[3,6,100],[1,6,100],[3,6,100],[4,6,100],[1,6,100],[12,5,100],[1,6,100],[10,5,100], _
[1,6,100],[12,5,100],[1,6,100],[3,6,100],[12,5,100],[10,5,100],[12,5,100],[8,5,100],[12,5,100],[10,5,100], _
[12,5,100],[1,6,100],[10,5,100],[8,5,100],[10,5,100],[7,5,100],[10,5,100],[8,5,100],[10,5,100],[12,5,100], _
[8,5,100],[7,5,100],[8,5,100],[3,5,100],[8,6,100],[6,6,100],[8,6,100],[9,6,100],[6,6,100],[4,6,100], _
[6,6,100],[3,6,100],[6,6,100],[4,6,100],[6,6,100],[8,6,100],[4,6,100],[3,6,100],[4,6,100],[1,6,100], _
[4,6,100],[3,6,100],[4,6,100],[6,6,100],[3,6,100],[1,6,100],[3,6,100],[12,5,100],[3,6,100],[1,6,100], _
[3,6,100],[4,6,100],[1,6,100],[12,5,100],[1,6,100],[8,5,100],[1,6,100],[12,5,100],[1,6,100],[9,5,100], _
[6,6,100],[4,6,100],[6,6,100],[8,5,100],[4,6,100],[3,6,100],[4,6,100],[6,5,100],[3,6,100],[1,6,100], _
[3,6,100],[4,5,100],[1,6,100],[12,5,100],[1,6,100],[9,5,100],[6,5,100],[4,5,100],[6,5,100],[8,5,100], _
[4,5,100],[3,5,100],[4,5,100],[6,5,100],[3,5,100],[1,5,100],[3,5,100],[8,5,100],[3,6,100],[1,6,100], _
[3,6,100],[4,6,100],[1,6,100],[12,5,100],[1,6,100],[10,5,100],[1,6,100],[12,5,100],[1,6,100],[3,6,100], _
[12,5,100],[10,5,100],[12,5,100],[8,5,100],[12,5,100],[10,5,100],[12,5,100],[1,6,100],[10,5,100],[8,5,100], _
[10,5,100],[7,5,100],[10,5,100],[8,5,100],[10,5,100],[12,5,100],[8,5,100],[7,5,100],[8,5,100],[3,5,100], _
[8,6,100],[6,6,100],[8,6,100],[9,6,100],[6,6,100],[4,6,100],[6,6,100],[3,6,100],[6,6,100],[4,6,100], _
[6,6,100],[8,6,100],[4,6,100],[3,6,100],[4,6,100],[1,6,100],[4,6,100],[3,6,100],[4,6,100],[6,6,100], _
[3,6,100],[1,6,100],[3,6,100],[12,5,100],[3,6,100],[1,6,100],[3,6,100],[4,6,100],[1,6,100],[12,5,100], _
[1,6,100],[8,5,100],[1,6,100],[12,5,100],[1,6,100],[9,5,100],[6,6,100],[4,6,100],[6,6,100],[8,5,100], _
[4,6,100],[3,6,100],[4,6,100],[6,5,100],[3,6,100],[1,6,100],[3,6,100],[4,5,100],[1,6,100],[12,5,100], _
[1,6,100],[9,5,100],[6,5,100],[4,5,100],[6,5,100],[8,5,100],[4,5,100],[3,5,100],[4,5,100],[6,5,100], _
[3,5,100],[1,5,100],[3,5,100],[3,5,100],[8,6,100],[6,6,100],[8,6,100],[9,6,100],[6,6,100],[4,6,100], _
[6,6,100],[3,6,100],[6,6,100],[4,6,100],[6,6,100],[8,6,100],[4,6,100],[3,6,100],[4,6,100],[1,6,100], _
[4,6,100],[3,6,100],[4,6,100],[6,6,100],[3,6,100],[1,6,100],[3,6,100],[12,5,100],[3,6,100],[1,6,100], _
[3,6,100],[4,6,100],[1,6,100],[12,5,100],[1,6,100],[8,5,100],[1,6,100],[12,5,100],[1,6,100],[9,5,100], _
[6,6,100],[4,6,100],[6,6,100],[8,5,100],[4,6,100],[3,6,100],[4,6,100],[6,5,100],[3,6,100],[1,6,100], _
[3,6,100],[4,5,100],[1,6,100],[12,5,100],[1,6,100],[9,5,100],[6,5,100],[4,5,100],[6,5,100],[8,5,100], _
[4,5,100],[3,5,100],[4,5,100],[6,5,100],[3,5,100],[1,5,100],[3,5,100],[1,5,100],[1,5,100],[1,5,100], _
[8,5,100],[8,5,100],[8,5,100],[11,5,100],[11,5,100],[11,5,100],[1,6,100],[1,6,100],[1,6,100],[5,6,100], _
[5,6,100],[5,6,100],[5,5,900]]
EndIf
EndFunc
Func _WinAPI_SetWindowPos($hWnd, $hAfter, $iX, $iY, $iCX, $iCY, $iFlags)
; _WinAPI_SetWindowPos($mainGui, -1, -1, -1, -1, -1, BitOR(0x0001, 0x0002)) ; $SWP_NOSIZE, $SWP_NOMOVE
; Z order
; $HWND_BOTTOM = 1 ; Places the window at the bottom of the Z order
; $HWND_NOTOPMOST = -2 ; Places the window above all non-topmost windows
; $HWND_TOP = 0 ; Places the window at the top of the Z order
; $HWND_TOPMOST = -1 ; Places the window above all non-topmost windows
Local $aResult = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $hWnd, _
"hwnd", $hAfter, "int", $iX, "int", $iY, "int", $iCX, "int", $iCY, "uint", $iFlags)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0]
EndFunc ;==>_WinAPI_SetWindowPos
EDIT 10 : ajout du mode timer et de l'option mp3 pour l'alarme
EDIT 9 : l'ouverture du menu contextuel ne bloque plus le script
EDIT 8 : réglage du temps possible par touches flèche haut et bas (ani)
EDIT 7 : ajout du mode horloge
EDIT 6 : version mode évènementiel
EDIT 5 : masquage de la fenêtre par double-clic (TwentyToo)
EDIT 4 : optimisation du code de l'alarme (TT22)
EDIT 3 : le compteur ne s'arrête pas quand on déplace la fenêtre (Nicoto)
EDIT 2 : couleur du bouton de commande (sksbir)
EDIT 1 : réglage du temps avec la roulette de la souris (TT22)