Bonjour à tous.
Il arrive que mon programme de lecture de playliste audio plante, ce qui est facheux pour une webradio qui devrait diffuser continuellement.
Je corrige les bugs et çà arrive peu, mais j'aimerai trouver un moyen de le relancer automatiquement s'il plante pour une bêtise. (Le temps que je rentre du boulot et que j'analyse les logs du programme).
D'après mes recherches sur le forum, je devrais réaliser un programme 'service' de windows.
Du coup ce programme pourrait :
- Lancer mon programme automatiquement au démarrage de windows, lancer ensuite le programme de streaming vers le serveur (Broadcast Rocket)
- Si mon programme plante, essayer de le relancer trois fois.
Existe-t-il un tutoriel à jour sur ce sujet ? Une base pour bien structurer le programme et commencer sa réalisation. Comment déterminer que le programme est en cours d'exécution et n'a pas planté ? Merci.
https://www.lesfloralies.info
Relancer mon programme automatiquement sous Windows 10
Re: Relancer mon programme automatiquement sous Windows 10
Les services je trouve ça vraiment pas pratique à utiliser,
Solution windows
tu peux cependant utiliser les tâches planifiés de windows et lui donner le comportement que tu veux en cas de fermeture intempestive.
Solution windows en PB (via api)
Tu crées un autre exe qui surveille la fenêtre du programme (un timer toutes les x sec/min) voir API FindWindow_. Si celle ci disparaît, il le relance via un runprogram.
Solution windows
tu peux cependant utiliser les tâches planifiés de windows et lui donner le comportement que tu veux en cas de fermeture intempestive.
Solution windows en PB (via api)
Tu crées un autre exe qui surveille la fenêtre du programme (un timer toutes les x sec/min) voir API FindWindow_. Si celle ci disparaît, il le relance via un runprogram.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Relancer mon programme automatiquement sous Windows 10
Code : Tout sélectionner
; ----------------------------------------------------------------------
;
; PROGRAMME STARTER RADIO DES FLORALIES
;
; ----------------------------------------------------------------------
; UNIQUEMENT POUR WINDOWS
;
; Hubert BAYRE : hubert.bayre@orange.fr
; mai 2021
EnableExplicit
XIncludeFile "formulaire_programmation_starter.pbf"
Global Event
Global bFini
Global bLancer
Global ProgrammeID
Global Message$
Global TempsAffichage
Global TempsTest
Global NbTentatives
Global Etat
#PROGRAMME_A_DETERMINER = 0
#PROGRAMME_ACTIF = 1
#PROGRAMME_INACTIF = 2
#PROGRAMME_A_LANCER = 3
#PROGRAMME_LANCE = 4
#PROGRAMME_TENTATIVES_REALISEES = 5
#MAX_LANCEMENTS = 5
#TITRE_FENETRE_APPLICATION = "Programmation Radio Les Floralies"
; ---------------------------------------------------------
;
; FONCTIONS
;
; ---------------------------------------------------------
Procedure Quitter()
Define Result
Result = MessageRequester("Quitter le programme", "Quitter, veuillez faire votre choix :", #PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure Tester()
Define bTrouve
Define hWnd
Define cnt
Define Title.s
bTRouve = #False
Repeat
hWnd = FindWindowEx_(0, hWnd, 0, 0)
If hwnd
cnt + 1
title.s = Space(512)
GetWindowText_(hWnd, @title, 512)
If CountString (title,#TITRE_FENETRE_APPLICATION) = 1
bTrouve = #True
EndIf
EndIf
Until hWnd = 0
If bTrouve = #False
Etat = #PROGRAMME_A_LANCER
EndIf
EndProcedure
; ---------------------------------------------------------
;
; PROGRAMME PRINCIPAL
;
; ---------------------------------------------------------
TempsAffichage = ElapsedMilliseconds()
TempsTest = ElapsedMilliseconds()
bLancer = #False
bFini = #False
Etat = #PROGRAMME_A_DETERMINER
OpenWindow_1(0,0)
Message$ = ""
NbTentatives = 0
Repeat
Event = WindowEvent()
If Event
Select Event
Case #PB_Event_CloseWindow
bFini = Quitter()
Case #PB_Event_Gadget
Select EventGadget()
Case Button_demarrer
If bLancer = #False
SetGadgetText (Button_demarrer, "Arrêter")
bLancer = #True
Else
SetGadgetText (Button_demarrer, "Démarrer")
bLancer = #False
EndIf
EndSelect
EndSelect
Else
Delay(2)
EndIf
If ElapsedMilliseconds() - TempsTest > 2000
Tester()
TempsTest = ElapsedMilliseconds()
EndIf
If bLancer = #True
Select Etat
Case #PROGRAMME_A_LANCER
If IsProgram (ProgrammeID) = 0
If NbTentatives < #MAX_LANCEMENTS
ProgrammeID = RunProgram ("programmation_radio.exe","",GetCurrentDirectory())
Delay (3000)
Message$ = "Lancement du programme."
NbTentatives = NbTentatives + 1
Etat = #PROGRAMME_ACTIF
Else
Etat = #PROGRAMME_TENTATIVES_REALISEES
EndIf
EndIf
Case #PROGRAMME_ACTIF
Message$ = "Programme actif."
Case #PROGRAMME_TENTATIVES_REALISEES
Message$ = "Hors tentatives !"
EndSelect
Else
Message$ = "En attente"
NbTentatives = 0
EndIf
If ElapsedMilliseconds() - TempsAffichage > 500
SetGadgetText (Text_message, Message$)
TempsAffichage = ElapsedMilliseconds()
EndIf
Delay(2)
Until bFini
End
; ---------------------------------------------------------
;
; FIN DU PROGRAMME
;
; ---------------------------------------------------------
Re: Relancer mon programme automatiquement sous Windows 10
Bien
Ajoute un timer et supprime ton delay ce sera plus propre
Ajoute un timer et supprime ton delay ce sera plus propre
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Relancer mon programme automatiquement sous Windows 10
un exemple ?Ajoute un timer et supprime ton delay ce sera plus propre
Re: Relancer mon programme automatiquement sous Windows 10
Code : Tout sélectionner
Enumeration
#win
#montimer
EndEnumeration
dureeMS = 1000 ; 1sec
If OpenWindow(#win, 0, 0, 400, 100, "Exemple Minuteur", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddWindowTimer(#win, #montimer, dureeMS)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Timer
Select EventTimer()
Case #montimer
Compte + 1
SetWindowTitle (#win, Str(compte))
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels