Recevoir les erreurs d'un programme [R]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Recevoir les erreurs d'un programme

Message 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 ?
Avatar de l’utilisateur
Mindphazer
Messages : 701
Inscription : mer. 24/août/2005 10:42

Re: Recevoir les erreurs d'un programme

Message 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......
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Recevoir les erreurs d'un programme

Message 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
Avatar de l’utilisateur
Mindphazer
Messages : 701
Inscription : mer. 24/août/2005 10:42

Re: Recevoir les erreurs d'un programme

Message 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 ?
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Recevoir les erreurs d'un programme

Message 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 ?
Fred
Site Admin
Messages : 2858
Inscription : mer. 21/janv./2004 11:03

Re: Recevoir les erreurs d'un programme

Message par Fred »

un thread ?
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Recevoir les erreurs d'un programme

Message 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
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Recevoir les erreurs d'un programme

Message par Shinao »

Okey !

J'utilisais les timers moi...

Merci pour vos réponses !
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Recevoir les erreurs d'un programme [R]

Message par graph100 »

ne pas oublier de compiler en thread safe !!
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Recevoir les erreurs d'un programme [R]

Message par Shinao »

Oui M'sieur
Répondre