Retourner une valeur à la fin du programme

Résolu
aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
- 21 mai 2007 à 09:52
aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
- 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 :)

7 réponses

aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
1
14 juin 2007 à 08:17
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 ;)
3
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
21 mai 2007 à 09:59
La valeur du 'return V' qui correspond à ExitProcess(V) se lit par GetExitCodeProcess().

ciao...
BruNews, MVP VC++
0
aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
1
21 mai 2007 à 11:05
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 :)
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
21 mai 2007 à 11:19
Aucune idée en VB.
En C console, valeur retournée par exit(V) ou _exit(V).

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
1
22 mai 2007 à 07:59
personne ne sait svp? :(
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
22 mai 2007 à 08:26
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
0
aurelien2723
Messages postés
181
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
26 janvier 2011
1
22 mai 2007 à 11:14
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 :)
0