Page 1 sur 1

Programmateur simple et prêt à l'emploi

Publié : ven. 01/févr./2008 14:03
par Jacobus
Hello, voici un petit log qui vous permettra d'agrémenter vos créations en incluant la possibilité de créer une tâche planifiée par votre programme. Ca peut être utile pour vérifier une mise à jour, gérer des sauvegardes automatiques, créer des alertes, etc....

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 
@+
:wink:

Publié : ven. 01/févr./2008 14:56
par Anonyme2
C'est Noël 11 mois avant :D

Merci, je vais tester
A+
Denis

Publié : ven. 01/févr./2008 20:30
par Jacobus
Il est facilement modifiable pour le rendre utilisable à l'heure ou la minute en fonction de ce que l'on veut faire. Ou encore ajouter le choix du programme à exécuter.

Publié : ven. 01/févr./2008 21:38
par Backup
tu crois qu'on les lis pas tes commentaires ?? :twisted: :twisted: :lol:

Publié : ven. 01/févr./2008 21:42
par wolfjeremy
MDR les commentaires j'ai bien aimé aussi

T'aurais quand même pu nous donner les icones, j'ai la flemme de les faire.

Publié : ven. 01/févr./2008 21:56
par Jacobus
tu crois qu'on les lis pas tes commentaires ??
Euh si si, mais je l'ai fais exprès :mrgreen: (bon, j'édite parce-que c'est toi :lol: )
T'aurais quand même pu nous donner les icônes, j'ai la flemme de les faire.
me dis pas que tu n'as pas 3 icônes qui traînent sur ton pc :?: 2 en 16x16 et celle en 128 tu mets ce que tu veux, même un bmp le cas échéant.

Publié : ven. 01/févr./2008 22:09
par Backup
Jacobus a écrit : (bon, j'édite parceque c'est toi :lol: )
AAARG ! :lol: :lol: