aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 2011
-
21 mai 2007 à 09:52
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 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)
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 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.
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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).
aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 20111 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.