#RequireAdmin #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_icon=reveil-icone-7771.ico #AutoIt3Wrapper_Res_ICON_Add=play-right-arrow-icone-7025.ico #AutoIt3Wrapper_Res_ICON_Add=break-icone-3756.ico #AutoIt3Wrapper_Res_ICON_Add=stop-icone-8205.ico #AutoIt3Wrapper_Res_ICON_Add=music-folder-red-icone-5269.ico #AutoIt3Wrapper_Res_ICON_Add=screen-sleep-icone-9718.ico #AutoIt3Wrapper_UseX64=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: Matwachich Script Function: Reveil matin simple, uilisant comme sonerie un fichier sur le disque #ce ---------------------------------------------------------------------------- Opt("GUIOnEventMode", 1) OnAutoItExitRegister("_exit") TrayCreateItem("Quitter") TrayItemSetOnEvent(-1, "_trayQuit") Opt("TrayMenuMode", 9) Opt("TrayOnEventMode", 1) Global $MusicHandle = "" #include #include #include #include #include #include #include #include #include #include #include $ret = _getLastSong() #Region ### START Koda GUI section ### Form=C:\Users\Max\Desktop\Player\Reveil.kxf $Reveil = GUICreate("Reveil", 279, 144, 192, 124) $Tab1 = GUICtrlCreateTab(0, 0, 273, 137, BitOR($TCS_BOTTOM, $TCS_VERTICAL, $TCS_BUTTONS)) $TabSheet1 = GUICtrlCreateTabItem("Réveil") $Label = GUICtrlCreateLabel("Heure :", 10, 8, 54, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $heure = GUICtrlCreateInput(StringLeft(_NowTime(4), 2), 64, 7, 25, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER)) GUICtrlSetLimit(-1, 2) $Label2 = GUICtrlCreateLabel("Heures", 92, 9, 54, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $minute = GUICtrlCreateInput(StringRight(_NowTime(4), 2), 149, 8, 25, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER)) $Label1 = GUICtrlCreateLabel("Minutes", 177, 9, 57, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $BSong = GUICtrlCreateButton("", 31, 69, 75, 57, $BS_ICON) GUICtrlSetImage(-1, @AutoItExe, -8) GUICtrlSetOnEvent(-1, "_brows") $Label4 = GUICtrlCreateLabel("Sonnerie:", 8, 40, 70, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Song = GUICtrlCreateInput(_getLastSong(), 83, 40, 153, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY)) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Sleep = GUICtrlCreateButton("", 144, 69, 75, 57, $BS_ICON) GUICtrlSetImage(-1, @AutoItExe, -9) GUICtrlSetOnEvent(-1, "_go") $TabSheet2 = GUICtrlCreateTabItem("Player") $Label5 = GUICtrlCreateLabel("Nom de la chanson", 8, 8, 233, 20, $SS_CENTER) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Progress = GUICtrlCreateProgress(6, 36, 230, 25, $PBS_SMOOTH) $play = GUICtrlCreateButton("", 8, 80, 59, 41, $BS_ICON) GUICtrlSetImage(-1, @AutoItExe, -5,0) GUICtrlSetOnEvent(-1, "Play") $Pause = GUICtrlCreateButton("", 80, 80, 67, 41, $BS_ICON) GUICtrlSetImage(-1, @AutoItExe, -6,0) GUICtrlSetOnEvent(-1, "Pause") $Stop = GUICtrlCreateButton("", 160, 80, 67, 41, $BS_ICON) GUICtrlSetOnEvent(-1, "Stop") GUICtrlSetImage(-1, @AutoItExe, -7,0) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### GUISetOnEvent($GUI_EVENT_DROPPED, "_droped") GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") _BASS_STARTUP() _BASS_Init(0, -1, 44100, 0, "") If @error Then MsgBox(0, "Error", "Could not initialize audio") Exit EndIf If _verifFile() Then $MusicHandle = _BASS_StreamCreateFile(False, $ret, 0, 0, 0) $ret = StringTrimLeft($ret, StringInStr($ret, "\", 0, -1)) $ret = StringTrimRight($ret, 4) GUICtrlSetData($Label5, $ret) $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE) While 1 Sleep(100) $current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE) GUICtrlSetData($Progress, Round(($current / $song_length) * 100, 0)) WEnd Func play() _BASS_ChannelPlay($MusicHandle, 1) EndFunc ;==>play Func Pause() _BASS_ChannelPause($MusicHandle) EndFunc ;==>Pause Func Stop() _BASS_ChannelStop($MusicHandle) EndFunc ;==>Stop Func _brows() Local $ret = FileOpenDialog("Réveil matin", @DesktopDir, "All (*.mp3;*.wav)", 3, "", $Reveil) If @error Then Return 0 GUICtrlSetData($Song, $ret) _BASS_StreamFree($MusicHandle) If _verifFile() Then $MusicHandle = _BASS_StreamCreateFile(False, $ret, 0, 0, 0) _saveLastSong() $ret = StringTrimLeft($ret, StringInStr($ret, "\", 0, -1)) $ret = StringTrimRight($ret, 4) GUICtrlSetData($Label5, $ret) EndFunc ;==>_brows Func _go() If Not _verifTime() Then Return _erreur($heure) If Not _verifFile() Then Return _erreur($Song) GUICtrlSetState($TabSheet2, $GUI_SHOW) $tag1 = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, GUICtrlRead($heure), GUICtrlRead($minute)) $tag2 = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN) If Int(GUICtrlRead($heure)) < @HOUR Or ( int(GUICtrlRead($heure)) = @HOUR And Int(GUICtrlRead($minute)) <= @MIN )Then $sNewDate = _DateAdd('d', 1, _NowCalcDate()) $sNewDate = StringSplit($sNewDate, "/") $jour = Int($sNewDate[3]) $Mois = Int($sNewDate[2]) $annee = Int($sNewDate[1]) SetWakeUpTime(Int(GUICtrlRead($heure)), Int(GUICtrlRead($minute)), $jour, $Mois, $annee) Else SetWakeUpTime(Int(GUICtrlRead($heure)), Int(GUICtrlRead($minute))) EndIf SetSuspend() Sleep(10000) play() WinActivate($Reveil) EndFunc ;==>_go Func _droped() GUICtrlSetData($Song, @GUI_DragFile) EndFunc ;==>_droped Func _trayQuit() If MsgBox(36, "Réveil matin", "Vraiment?") = 6 Then Exit EndFunc ;==>_trayQuit Func _verifFile() Return FileExists(GUICtrlRead($Song)) EndFunc ;==>_verifFile Func _verifTime() If GUICtrlRead($heure) > 24 Or GUICtrlRead($heure) < 0 Or GUICtrlRead($minute) > 60 Or GUICtrlRead($minute) < 0 Then Return 0 Return 1 EndFunc ;==>_verifTime Func _erreur($ctrl) ConsoleWrite("Erreur!" & @CRLF) GUICtrlSetBkColor($ctrl, 0xFF0000) GUICtrlSetFont($ctrl, Default, 600) AdlibRegister("_unColor", 5000) EndFunc ;==>_erreur Func _unColor() GUICtrlSetBkColor($heure, 0xFFFFFF) GUICtrlSetFont($heure, Default, Default) GUICtrlSetBkColor($minute, 0xFFFFFF) GUICtrlSetFont($minute, Default, Default) GUICtrlSetBkColor($Song, 0xFFFFFF) GUICtrlSetFont($Song, Default, Default) AdlibUnRegister("_unColor") EndFunc ;==>_unColor Func _saveLastSong() IniWrite(@TempDir & "\reveilMatinConfig.ini", "", "lastSong", GUICtrlRead($Song)) EndFunc ;==>_saveLastSong Func _getLastSong() Return IniRead(@TempDir & "\reveilMatinConfig.ini", "", "lastSong", "") EndFunc ;==>_getLastSong Func _exit() OnAutoItExitUnregister("_exit") ;MemoryDllExit() _BASS_Free() Exit EndFunc ;==>_exit Func SetWakeUpTime($Hour, $minute, $Day = @MDAY, $Month = @MON, $Year = @YEAR) $SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort") $lpSYSTEMTIME = DllStructGetPtr($SYSTEMTIME) $LOCALFILETIME = DllStructCreate("dword;dword") $lpLOCALFILETIME = DllStructGetPtr($LOCALFILETIME) $DueTime = DllStructCreate("dword;dword") $lpDueTime = DllStructGetPtr($DueTime) DllStructSetData($SYSTEMTIME, 1, $Year) DllStructSetData($SYSTEMTIME, 2, $Month) DllStructSetData($SYSTEMTIME, 3, _DateToDayOfWeek($Year, $Month, $Day) - 1) DllStructSetData($SYSTEMTIME, 4, $Day) DllStructSetData($SYSTEMTIME, 5, $Hour) DllStructSetData($SYSTEMTIME, 6, $minute) DllStructSetData($SYSTEMTIME, 7, 0) DllStructSetData($SYSTEMTIME, 8, 0) $result = DllCall("kernel32.dll", "long", "SystemTimeToFileTime", "ptr", $lpSYSTEMTIME, "ptr", $lpLOCALFILETIME) If $result[0] = 0 Then Local $lastError = DllCall("kernel32.dll", "int", "GetLastError") SetExtended($lastError[0]) SetError(1) Return 0 EndIf $result = DllCall("kernel32.dll", "long", "LocalFileTimeToFileTime", "ptr", $lpLOCALFILETIME, "ptr", $lpLOCALFILETIME) If $result[0] = 0 Then Local $lastError = DllCall("kernel32.dll", "int", "GetLastError") SetExtended($lastError[0]) SetError(1) Return 0 EndIf $result = DllCall("kernel32.dll", "long", "CreateWaitableTimer", "long", 0, "long", True, "str", "") If $result[0] = 0 Then Local $lastError = DllCall("kernel32.dll", "int", "GetLastError") SetExtended($lastError[0]) SetError(1) Return 0 EndIf DllCall("kernel32.dll", "none", "CancelWaitableTimer", "long", $result[0]) DllStructSetData($DueTime, 1, DllStructGetData($LOCALFILETIME, 1)) DllStructSetData($DueTime, 2, DllStructGetData($LOCALFILETIME, 2)) $result = DllCall("kernel32.dll", "long", "SetWaitableTimer", "long", $result[0], "ptr", $lpDueTime, "long", 1000, "long", 0, "long", 0, "long", True) If $result[0] = 0 Then Local $lastError = DllCall("kernel32.dll", "int", "GetLastError") SetExtended($lastError[0]) SetError(1) Return 0 EndIf Return 1 ;#ce EndFunc ;==>SetWakeUpTime Func SetSuspend($mode = True, $force = True) $result = DllCall("PowrProf.dll", "long", "SetSuspendState", "long", $mode, "long", $force, "long", False) EndFunc ;==>SetSuspend