Page 2 sur 2
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 9:20
par Shinao
Oui, mais si je sais comment analyser cmd.exe (programme que je ne lance pas directement avec mon runprogram(), je saurais analyser directement mon setup.
Bref, j'ai fais ça, et si j'ai quelque chose de plus pratique, je prend :
Code : Tout sélectionner
CreateFile(#BatInstall, "install.bat")
WriteStringN(#BatInstall, "@echo off")
WriteStringN(#BatInstall, "start /wait setup.exe")
WriteStringN(#BatInstall, "%errorlevel% > errorlog.txt")
Après :
Code : Tout sélectionner
If ProgramRunning(installer) = 0
ReadFile(#FileErrorLog, "errorlog.txt")
Erreur$ = ReadString(#FileErrorLog)
DeleteFile("installer.bat")
DeleteFile("errorlog.txt")
If Erreur$ = "0"
MessageRequester("Installation", "Installation réussie")
EndIf
EndIf
Voilà, tu comprends mieux ce que je veux faire ?
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 10:14
par Mindphazer
Ton .bat, il fait autre chose que de lancer le setup.exe ?
Passque sinon, je vois pas l'intérêt de créer un .bat qui lance un .exe......
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 10:35
par Shinao
Ton .bat, il fait autre chose que de lancer le setup.exe ?
Oui et non. Il lance mon .exe, mais sans lui il ne peux pas faire une installation silencieuse
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 10:47
par Mindphazer
Pour que ton exe se lance en mode silencieux, c'est un paramètre que tu passes ?
Si oui, pourquoi ne pas le passer en paramètre avec RunProgram ?
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 13:20
par Shinao
Parce que ça paraissait trop simple ?
Donc j'ai testé, en effet c'est possible aussi...
Le seul problème, car j'ai modifié tout mon code en fonction de ça, c'est que puisque je veux attendre que le programme lancé s'arrête, ben tout mon programme .pb s'arrête aussi, or ce n'était pas le cas avec le batch car c'est lui qui attendait, non pas mon programme.
Une idée ?
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 14:10
par Fred
un thread ?
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 14:29
par graph100
bah tu met pas waitprogram(), ni l'option qui fait attendre le programme.
Ou alors tu lance ton programme depuis un thread, et c'est le thread qui attend, puis signale que le programme est fini ^^
Un petit exemple, ça éclaircit toujours mieux les choses
[edit] Arf, Fred, tu m'as grillé !
Code : Tout sélectionner
Procedure Pointille(bla)
a = 0
Repeat
SetGadgetText(0, LSet("Attente ", 8 + a, "."))
a + 1
If a = 5 : a = 0 : EndIf
Delay(500)
ForEver
EndProcedure
Procedure LancementProgramme(*adresse_nom_prog)
id_prog = RunProgram(PeekS(*adresse_nom_prog), "", "", #PB_Program_Open)
If id_prog
WaitProgram(id_prog)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 120, 40, "blabla", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
TextGadget(0, 10, 10, 100, 20, "Attente")
EndIf
; lancement des pointillés d'attente
thread_pointille = CreateThread(@Pointille(), 0)
; lancement du thread de lancement du programme
prog.s = "C:\Windows\System32\calc.exe"
thread_program = CreateThread(@LancementProgramme(), @prog)
Repeat
event = WaitWindowEvent(100)
If IsThread(thread_program) = 0 : event = #PB_Event_CloseWindow : EndIf
Until event = #PB_Event_CloseWindow
KillThread(thread_pointille)
End
Re: Recevoir les erreurs d'un programme
Publié : mer. 01/juin/2011 14:33
par Shinao
Okey !
J'utilisais les timers moi...
Merci pour vos réponses !
Re: Recevoir les erreurs d'un programme [R]
Publié : mer. 01/juin/2011 14:43
par graph100
ne pas oublier de compiler en thread safe !!
Re: Recevoir les erreurs d'un programme [R]
Publié : mer. 01/juin/2011 15:07
par Shinao
Oui M'sieur