Page 1 sur 2

End MonCodeDeRetour ; comment çà marche ?

Publié : mer. 02/nov./2005 20:52
par Flype
où je sais plus programmer, ou il y a un problème !

comment on se sert de la commande End pour faire en sorte que l'exécutable généré retourne un code de retour réutilisable dans un autre programme quand on fait RunProgram() ?

par exemple un programme bidon qu'on compile et appelle rc.exe :

Code : Tout sélectionner

; code de retour

ExitCode.l = MessageRequester("test","test",#PB_MessageRequester_YesNoCancel|#MB_SETFOREGROUND)

; fin

End ExitCode
et un programme tout aussi bidon qui appelle rc.exe :

Code : Tout sélectionner

rc = RunProgram("rc.exe","","",1|2)
Debug rc ; manifestement ce n'est pas mon code de retour d'origine
:x je n'ai pas trouvé comment on fait...

Publié : mer. 02/nov./2005 20:58
par Flype
cool j'ai trouvé :

Code : Tout sélectionner

; exécutable

processId.l = RunProgram("rc.exe","","",1|2)

; code de retour

If GetExitCodeProcess_(processId,@ExitCode.l)
  MessageRequester("code de retour",Str(ExitCode))
EndIf

Publié : mer. 02/nov./2005 21:05
par nico
Encore un truc à savoir en plus, merci Flype! :)

Publié : mer. 02/nov./2005 21:57
par Droopy
Merci Flype, je m'étais cassé les dents sur le même problème.

Enfin résolu :D

Publié : jeu. 03/nov./2005 12:54
par Chris
Ben non, Flype!

Désolé, mais ça ne résoud pas le problème initial qui est "comment on se sert de la commande End pour faire en sorte que l'exécutable généré retourne un code de retour...".

Le code que tu donnes fonctionne, il n'y a pas de doute, mais "End" n'y apparaît pas. :roll:

Ben oui :wink:

Publié : jeu. 03/nov./2005 14:06
par Droopy

Code : Tout sélectionner

End ExitCode
??

Publié : jeu. 03/nov./2005 14:42
par Chris
Droopy a écrit :

Code : Tout sélectionner

End ExitCode
??
Oui..???
Et alors...???

Publié : jeu. 03/nov./2005 15:08
par Droopy

Code : Tout sélectionner

; code de retour 

ExitCode.l = MessageRequester("test","test",#PB_MessageRequester_YesNoCancel|#MB_SETFOREGROUND) 

; fin 

End ExitCode
la dernière commande est bien End non ?

Publié : jeu. 03/nov./2005 15:11
par Chris
Oui, seulement, cette partie là est dans la question, et pas dans la réponse :lol:
Flype a écrit :où je sais plus programmer, ou il y a un problème !

comment on se sert de la commande End pour faire en sorte que l'exécutable généré retourne un code de retour réutilisable dans un autre programme quand on fait RunProgram() ?

par exemple un programme bidon qu'on compile et appelle rc.exe :Code:
; code de retour

ExitCode.l = MessageRequester("test","test",#PB_MessageRequester_YesNoCancel|#MB_SETFOREGROUND)

; fin

End ExitCode


et un programme tout aussi bidon qui appelle rc.exe :Code:
rc = RunProgram("rc.exe","","",1|2)
Debug rc ; manifestement ce n'est pas mon code de retour d'origine


je n'ai pas trouvé comment on fait...

Publié : jeu. 03/nov./2005 17:26
par Droopy
Bien vu, j'avais pas vu :wink:

Publié : jeu. 03/nov./2005 20:47
par Flype
Je comprends rien a ce que vous dites.
Au départ je pensais que End [ExitCode] ne fonctionnait pas correctement, puisque d'une manière ou d'une autre je n'arrivais pas à récupérer cet ExitCode depuis un autre source.
Mais en fait tout va bien, End [ExitCode] fait son travail correctement, c'est RunProgram qui devrait intégrer un nouvel argument (un pointeur sur une variable pour stocker le code de retour).

peut etre à mettre dans la wishlist. :-)

Publié : jeu. 03/nov./2005 22:10
par Chris
Ben oui, parce qu'en fait, le ExitCode, tu peux le récupèrer avec un GetExitCodeProcess_(), mais c'est pas vraiment le but.

Il faudrait pouvoir le récupérer, soit avec le RunProgram(), soit avec une autre fonction, mais qui soit incluse dans Pure.

Je me suis amusé à faire ça, tout à l'heure:

Code : Tout sélectionner

;- Programme à compiler : "Test.exe"

OpenWindow(0, 100, 100, 100, 100, #PB_Window_SystemMenu, "Test.exe") 

Select MessageRequester("Test.exe", "Voulez vous terminer ce programme ?", #MB_OKCANCEL|#MB_ICONQUESTION)
  Case #IDOK
    End 100
EndSelect

Repeat : Until WaitWindowEvent() = #PB_EventCloseWindow
End

Code : Tout sélectionner

;- Programme pour tester "Test.exe"

processID = RunProgram("Test.exe", "", "", 1)

While code <> 100 : GetExitCodeProcess_(processID, @code.l) : Wend

MessageRequester("Fini", "Le programme ''Test.exe'' est terminé")
End

Publié : ven. 04/nov./2005 21:35
par Flype
oui on est bien d'accord Chris - par contre RunProgram("Test.exe","","",1) devrait être RunProgram("Test.exe","","",0) sinon ton test ne sert à rien ( 1 = on attends la fin du program, 0 = exécution en tache de fond ) :wink:

Publié : ven. 04/nov./2005 21:41
par Chris
Ah oui, tiens....
J'avais pas fait gaffe! :lol:

Bref, l'important, c'est quand même qu'il manque quelque chose pour la récupérer, cette valeur retournée par End

Publié : ven. 04/nov./2005 21:44
par Flype
Tout à fait d'accord :twisted: