le programme est complet et fonctionnel, PB 4.10 et montre l'utilisation de quelques fonctions très utiles. Ajoutez vos icônes et ça roule. C'est cadeau

Icônes obligatoires pour ajout dans le systray
Code : Tout sélectionner
; Codé par Jacobus 01/02/2008
; code PB 4.10 comportant des API, donc PB demo proscrit, désolé.
;-Constantes
Enumeration
#WIN
#ContainerImage
#Img_TimerAction
#TextSelectDate
#FrameSelect
#TextDate
#ComboDate
#TextHeure
#ComboHeure
#ComboMinute
#ComboSeconde
#TextDemarre
#TextTache
#BtnTimer
#BtnStop
#BtnClose
#StatusPlan
#TimerSysTrayIcon
EndEnumeration
;-Images (sélectionnez les vôtres)
Global Image0,Image1,Image2
Image0 = CatchImage(0, ?Image0) ; 128x128
Image1 = CatchImage(1, ?Image1) ; 16x16
Image2 = CatchImage(2, ?Image2) ; 16x16
DataSection
Image0 : IncludeBinary "ICONES\Icones_128\TimerAction.ico"
Image1 : IncludeBinary "ICONES\ICONES16\Executer.ico"
Image2 : IncludeBinary "ICONES\ICONES16\TimerSystray.ico"
EndDataSection
Global Font0
Font0 = LoadFont(0, "Arial", 8,#PB_Font_Bold|#PB_Font_HighQuality)
Procedure Planification(Jour$,Heure.l,Minutes.l,Secondes.l)
If Jour$ = "Jours"
Day$ = "Jours"
Else
Jour = DayOfWeek(Date())
If Jour = 0 : Day$ = "Dimanche"
ElseIf Jour = 1 : Day$ = "Lundi"
ElseIf Jour = 2 : Day$ = "Mardi"
ElseIf Jour = 3 : Day$ = "Mercredi"
ElseIf Jour = 4 : Day$ = "Jeudi"
ElseIf Jour = 5 : Day$ = "Vendredi"
ElseIf Jour = 6 : Day$ = "Samedi"
EndIf
EndIf
Hour = Hour(Date())
Minute = Minute(Date())
Second = Second(Date())
If Day$ = Jour$ And Heure = Hour And Minutes = Minute And Secondes = Second
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
Global Task.l
Task = 0
Procedure BackupPlanification()
Jour$ = GetGadgetText(#ComboDate)
Heure = Val(GetGadgetText(#ComboHeure))
Minutes = Val(GetGadgetText(#ComboMinute))
Secondes = Val(GetGadgetText(#ComboSeconde))
If Planification(Jour$,Heure,Minutes,Secondes) = 1
; c'est ici qu'il faut prévoir la tâche à effectuer, il peut s'agir d'un RunProgram() avec ses paramètres,
; ou simplement une alerte en déclenchant un son (sirène d'alarme, cri d'orang-outang en rut, Dobro jouant de la guitare un soir de beuverie avec ses potes, etc...)
; Vous pouvez aussi afficher un postit avec la liste des courses, une photo de Fred en pied et en caleçon....
; Un simple requester pour le test. dans mon cas c'est une sauvegarde auto.
MessageRequester("Timer backUp","Il est temps de sauvegarder",#MB_ICONINFORMATION)
Task = Task+1
SetGadgetText(#TextTache,"Tâche effectuée : "+Str(Task)+" fois")
EndIf
EndProcedure
;-Fenêtre
If OpenWindow(#WIN,0,0,500,300,"Planification" ,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_TitleBar|#PB_Window_Invisible)=0 Or CreateGadgetList(WindowID(#WIN))=0
End
EndIf
ContainerGadget(#ContainerImage,5,5,150,265)
SetGadgetColor(#ContainerImage,#PB_Gadget_BackColor,RGB(59, 127, 118))
ImageGadget(#Img_TimerAction, 10,10,128,128,Image0)
TextGadget(#TextSelectDate, 10,160,130,90,"Sélectionnez le moment précis pour déclencher la sauvegarde"+Chr(13)+"Cliquez sur [Activer] pour enclencher le minuteur")
SetGadgetColor(#TextSelectDate,#PB_Gadget_BackColor,RGB(59, 127, 118))
SetGadgetColor(#TextSelectDate,#PB_Gadget_FrontColor,RGB(255, 255, 255))
;SetGadgetFont(#TextSelectDate,Font0)
CloseGadgetList()
Frame3DGadget(#FrameSelect, 170,10,320,260,"Planifier")
TextGadget(#TextDate, 190,47,50,15,"Tous les",#PB_Text_Center)
ComboBoxGadget(#ComboDate,245,45,160,60,#PB_ComboBox_Editable)
AddGadgetItem(#ComboDate, -1, "Jours")
AddGadgetItem(#ComboDate, -1, "Dimanche")
AddGadgetItem(#ComboDate, -1, "Lundi")
AddGadgetItem(#ComboDate, -1, "Mardi")
AddGadgetItem(#ComboDate, -1, "Mercredi")
AddGadgetItem(#ComboDate, -1, "Jeudi")
AddGadgetItem(#ComboDate, -1, "Vendredi")
AddGadgetItem(#ComboDate, -1, "Samedi")
TextGadget(#TextHeure, 190,72,50,15,"à",#PB_Text_Center)
ComboBoxGadget(#ComboHeure, 245,70,50,20,#PB_ComboBox_Editable):GadgetToolTip(#ComboHeure,"Heure.")
For h = 0 To 23 : AddGadgetItem(#ComboHeure, -1,Str(h)) : Next h
ComboBoxGadget(#ComboMinute, 300,70,50,20,#PB_ComboBox_Editable):GadgetToolTip(#ComboMinute,"Minutes.")
For m = 0 To 59 : AddGadgetItem(#ComboMinute, -1,Str(m)) : Next m
ComboBoxGadget(#ComboSeconde, 355,70,50,20,#PB_ComboBox_Editable):GadgetToolTip(#ComboSeconde,"Secondes.")
For s = 0 To 59 : AddGadgetItem(#ComboSeconde, -1,Str(s)) : Next s
TextGadget(#TextDemarre, 190,142,250,15,"Timer démarré le :")
SetGadgetFont(#TextDemarre,Font0)
TextGadget(#TextTache, 190,172,250,15,"Tâche effectuée :")
SetGadgetFont(#TextTache,Font0)
ButtonGadget(#BtnTimer,190,230,80,25,"Activer",#PB_Button_Toggle):GadgetToolTip(#BtnTimer,"La tâche sera exécutée au moment programmé.")
ButtonGadget(#BtnStop,280,230,80,25,"Arrêter"):GadgetToolTip(#BtnStop,"Arrêter le timer.")
ButtonGadget(#BtnClose,400,230,80,25,"Annuler"):GadgetToolTip(#BtnClose,"Annuler et quitter")
DisableGadget(#BtnStop,1)
If CreateStatusBar(#StatusPlan, WindowID(#WIN))
AddStatusBarField(500)
StatusBarText(#StatusPlan,0,"Exécuter une tâche régulièrement",#PB_StatusBar_Raised)
StatusBarIcon(#StatusPlan,0,Image1) ;commenter si vous n'avez pas d'icône
EndIf
HideWindow(#WIN, 0)
;-Events
Repeat
Event = WaitWindowEvent()
;***** Décommentez cette partie si vous voulez 'icôniser' en cliquant sur la croix en haut à droite *****
If Event = #PB_Event_CloseWindow ;And Minimise=#False
; AddSysTrayIcon(#TimerSysTrayIcon, WindowID(#WIN), Image2)
; SysTrayIconToolTip(#TimerSysTrayIcon, "Programmation en attente")
; ShowWindow_(WindowID(#WIN),#SW_MINIMIZE)
; ShowWindow_(WindowID(#WIN),#SW_HIDE)
; Minimise=#True : quit=#False
quit=#True ; à commenter si décommenté au-dessus
EndIf
;******
Select Event
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
RemoveSysTrayIcon(#TimerSysTrayIcon)
ShowWindow_(WindowID(#WIN),#SW_RESTORE)
Minimise=#False
EndIf
EndSelect
If Event = #PB_Event_Gadget
Select EventGadget()
Case #BtnTimer
Jour$ = GetGadgetText(#ComboDate)
Heure.s = GetGadgetText(#ComboHeure)
Minutes.s = GetGadgetText(#ComboMinute)
Secondes.s = GetGadgetText(#ComboSeconde)
If Jour$<>"" And Heure<>"" And Minutes<>"" And Secondes<>""
If SetTimer_(WindowID(#WIN),1,1000,@BackupPlanification())
SetGadgetText(#TextDemarre,"Timer démarré le : "+FormatDate("%dd/%mm/%yyyy à %hh:%ii:%ss", Date()))
DisableGadget(#BtnTimer,1)
DisableGadget(#BtnStop,0)
AddSysTrayIcon(#TimerSysTrayIcon, WindowID(#WIN), Image2)
If Jour$ = "Jours"
Dprevu$ = "Tous les jours "
Else
Dprevu$ = Jour$
EndIf
SysTrayIconToolTip(#TimerSysTrayIcon, "La tâche sera exécutée : "+Dprevu$+"à "+Heure+"h"+Minutes+":"+Secondes)
ShowWindow_(WindowID(#WIN),#SW_MINIMIZE)
ShowWindow_(WindowID(#WIN),#SW_HIDE)
Minimise=#True : quit=#False
EndIf
Else
MessageRequester("Timer backUp","Programmation incomplète!",#MB_ICONEXCLAMATION)
SetGadgetState(#BtnTimer, 0)
DisableGadget(#BtnStop,1)
SetGadgetText(#TextDemarre,"Timer démarré le : ")
EndIf
Case #BtnStop
If KillTimer_(WindowID(#WIN),1)
DisableGadget(#BtnStop,1)
DisableGadget(#BtnTimer,0)
SetGadgetState(#BtnTimer, 0)
EndIf
SetGadgetText(#TextDemarre,"Timer démarré le : ")
Case #BtnClose : quit=#True
EndSelect
EndIf
;-End
Until quit=#True
If GetGadgetState(#BtnTimer) = 1
KillTimer_(WindowID(#WIN),1)
EndIf
End
