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 :mrgreen:
[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