Tous se qui est dans dans Form_Load met le dans une sub que tu appels dans Form_Load, pour voir, je suis un peu trop occupé pour l'instant pour faire l'essais
Tous se qui est dans dans Form_Load met le dans une sub que tu appels dans Form_Load, pour voir, je suis un peu trop occupé pour l'instant pour faire l'essais
Cela ne change rien.
En revanche si j'appel la procédure par un timer cela marche...... A condition de cliquer sur la fenêtre DOS.
Mais petit à petit on se rapproche.
Il faudrais que mon programme donne la main directement à la fenêtre DOS.
,
De mieux en mieux, je peux lui faire prendre la main tout seul, il suffit de lui envoyer n'importe quelle touche, normalement cette partie n'est pas un soucis.
Maintenant (hé oui je ne suis jamais satisfait), ma fenêtre DOS s'exécute en cacher ; je ne peux que la voir par le gestionnaire des taches, elle s'appelle cmd.exe. Est-il possible d'aller écrire dans cette fenêtre ???
J'ai essayeé avec le code que l'on m'a donné, mais cela ne fonctionne pas si la fenêtre est caché ?
Merci d'avance.
Coin.
Salut ProgElec
Je pense que si ton programme qui execute des commande dos, recupere le errorlevel, il y a peut être une solution avec les api windows
il faut terminer le progrmme dos avec un terminateprocess(hProgId,N°Erreur)
sans garantie, car je n'ai pas essaye
Tu termines ton programme en appelant cette routine au lieu du traditionel unload me
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub RemonteErreur(CodeErreur as long) Dim lRet As Long Dim hProcess As Long hProcess = GetCurrentProcess lRet = TerminateProcess(hProcess, CodeErreur) End Sub
Salut à tous,
Effectivement Delbeke, il faut que j'aille écrire dans la variable d'environnement pour que mon programme qui exécute des commandes DOS, voit l'erreur.
Le code que tu as mis au dessus, permet de modifier la variable d'environnement %errorlevel% ???
Je pensais qu'il existais un code comme : shell ou quelque chose comme ça!!!!
Merci d'avance.
Coin.
PS : Je n'arrive pas à exécuter le code car j'ai un problème avec les déclaration des fonctions GetCurrentProcess et TerminateProcess.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Public Declare Function GetCurrentProcess Lib "kernel32" () As Long Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Merci pour les déclarations,
Delbeke, ton programme ne me modifie pas la valeur de la variable %errorlevel%, lorsque que j'exécute le .exe d'une fenêtre dos, il me quitte mon programme, et lorsque je cherche à interroger la variable en faisant un :dans ma fenêtre dos, le code de retour est 0, sois aucune erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo %errorlevel%
Pourtant programme en génère une.....
Comment je peux modifier la variable d'environnement, j'ai essayerpar des commande DOS, mais je n'ai pas réussis à accéder à cette variable en modification ?
J'arrive juste à créer de nouvelle variable d'environnement (commande set en DOS).
Merci d'avance.
Coin.
Je signe et persiste, ce code modifie l' errolevel
je te propose de creer un projet, tu y mets 1 textbox nommé txtError,
1 bouton de commade nommé cmdQuit, et un autre nommé cmdQuitWithError
Place ensuite le code ci-dessous
tu compiles le tout en test.exe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Option Explicit 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 RemonteErreur(CodeErreur As Long) Dim lRet As Long Dim hProcess As Long hProcess = GetCurrentProcess lRet = TerminateProcess(hProcess, CodeErreur) End Sub Private Sub cmdQuit_Click() Unload Me End Sub Private Sub cmdQuitWithError_Click() RemonteErreur Val(txtError) End Sub
ensuite avec un editeur de texte quelconque, tu ecris le fichier batch suivant dans le meme repertoire que l'exe
ensuite tu ouvres une fenetre dos, tu te places dans le repertoire de test.exe et tu lances ton fichier batch
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Echo Off Test.exe if errorlevel 1 goto erreur goto paserreur :paserreur Echo Pas d'erreur de sortie goto Fin :erreur Echo Code erreur de sortie %errorlevel% :fin
Marche pas
Le batch continue sans attendre la fin de l'EXE...
Donc... Pas d'erreur à chaque fois.
C'est assez amusant en faite,
Si on lance seulement le projet la variable d'environnement n'est pas modifier, mais si on lance le programme par le batch, elle l'est....
J'aimerai bien que tu m'explique pourquoi Delbeke ?
Merci d'avance.
Coin.
Ok c'est bon j'ai fait des tests en réel....
J'arrive bien à transmettre l'erreur.
Le seule problème, il faut que je l'affiche dans la fenêtre dos le type de l'erreur :
Mais cette fenêtre, ouverte par le lanceur est caché, comment je peux écrire dans une fenêtre dos caché ?
Merci d'avance.
Coin.
Salut à tous,
Merci pour vos réponses, je remonte l'erreur mais je n'ai pas la description, donc je crée un fichier du genre log.txt
voici mon code de gestion d'erreur au cas où quelqu'un en aurai besoin :
Bonne soirée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 ' MODULE DE GESTION DES ERREURS 'A ajouter dans le VB : 'Juste en dessous du chargement du premier formulaire : ' Placer : On Error GoTo Erreur 'A la fin du sub load du premier formulaire ' Placer : Erreur : ' If err.Number <> 0 then ' call GestionErreur(err.number, err.description) ' end if Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Public Sub GestionErreur(Nbre As Long, Mess As String) On Error Resume Next Open "D:\Erreur\" & App.EXEName & "_" & Now & ".txt" For Output As #1 If Command <> "" Then Print #1, "Erreur pour le client : " & Command Print #1, "Le " & Now Print #1, "Erreur n° : " & Nbre Print #1, "Description : " & Mess Close #1 RemonteErreur (Nbre) End Sub Private Sub RemonteErreur(CodeErreur As Long) Dim lRet As Long Dim hProcess As Long hProcess = GetCurrentProcess lRet = TerminateProcess(hProcess, CodeErreur) End Sub
Coin.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager