Retourner une valeur à la fin du programme [Résolu]

aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 21 mai 2007 à 09:52 - Dernière réponse : aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention
- 14 juin 2007 à 08:17
Bonjour,

Je fais un programme en VB6, sous Windows XP.
J'aimerais retourner une valeur à la fin du programme pour savoir si celui-ci c'est bien dérouler.

En comparaison, je voudrait faire un return 0 ou return 1  comme on fait en C à la fin de la fonction principal.
Après plusieurs recherches, j'ai lu qu'il fallait utiliser la variable ERRORLEVEL.
Je fais donc
echo %ERRORLEVEL%
pouur connaitre la valeur de retour du dernier programme utiliser.
J'ai vérifier en C, cela marche bien :)

Pour le VB, j'ai lu qu'il fallait utiliser ExitProcess.
Or, cela ne marche pas :( :(
Je vous met mon code :

Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

Private Sub Form_Load()
    ExitProcess 9
End Sub

Ma variable ERRORLEVEL reste à zéro :(

Help me please :)

Merci :)
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 14 juin 2007 à 08:17
3
Merci
Pour générer une erreur dans ERRORLEVEL, les deux solutions que j'ai mise marche en fait, mais ErrorLevel doit être lu directement après, dans un .bat par exemple, ou avec des fonctions qui permettent de le récupèrer après appel dans un programme.

Voila ;)

Merci aurelien2723 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de aurelien2723
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 21 mai 2007 à 09:59
0
Merci
La valeur du 'return V' qui correspond à ExitProcess(V) se lit par GetExitCodeProcess().

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 21 mai 2007 à 11:05
0
Merci
Oui mais si je veux récupérer l'erreur dans un autre programme, pas forcément en VB, ou dans un batch...
il faut que mon code d'erreur soit dans errorlevel.

comment faire svp?

J'ai aussi trouver cette solution, mais elle ne fonctionne pas non plus :(

Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Sub Form_Load()
  
  Dim lRet As Long
  Dim hProcess As Long
  hProcess = GetCurrentProcess
  lRet = TerminateProcess(hProcess, 2)
End Sub

svp :)
Commenter la réponse de aurelien2723
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 21 mai 2007 à 11:19
0
Merci
Aucune idée en VB.
En C console, valeur retournée par exit(V) ou _exit(V).

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 22 mai 2007 à 07:59
0
Merci
personne ne sait svp? :(
Commenter la réponse de aurelien2723
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 22 mai 2007 à 08:26
0
Merci
Bonjour,

Je ferais la chose en utilisant, de manière conjuguée, les fonctions CreateProcess  et WaitForSingleObject de la librairie kernel32 de l'Api de Windows, en ouvrant le programme dont il s'agit en utilisant CreateProcess plutôt que Shell ou ShellExecute.
La fonction WaitForSingleObject ne retourne en effet rien tant que le processus ouvert n'est pas terminé.


Il est alors possible, me semble-t-il, d'utiliser colatéralement la fonction GetLastError, de Kernel32 également si la fonction WaitForSingleObject échoue (et retourne donc la valeur WAIT_FAILED).

Voilà donc...
Bon travail
Commenter la réponse de jmfmarques
aurelien2723 181 Messages postés jeudi 12 janvier 2006Date d'inscription 26 janvier 2011 Dernière intervention - 22 mai 2007 à 11:14
0
Merci
ok ok merci, mais je cherche pas à savoir comment récupérer cettte valeur, mais comment la "générer".
Comment affecter une valeur à ERRORLEVEL, qui est la variable contenant le code de retour du dernier programme exécuter.

http://1100f.free.fr/Batchs/la_commande_errorlevel.htm

Merci :)
Commenter la réponse de aurelien2723

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.