IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Remonter une valeur d'un programme VB exécuté d'une fenêtre DOS


Sujet :

VB 6 et antérieur

  1. #21
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 108
    Points : 16 640
    Points
    16 640
    Par défaut
    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

  2. #22
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut
    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.

  3. #23
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut
    ,

    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.

  4. #24
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    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

    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
    Tu termines ton programme en appelant cette routine au lieu du traditionel unload me

  5. #25
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut Précision de l'exécution de code
    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.

  6. #26
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    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

  7. #27
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut
    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

    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.

  8. #28
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    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

    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
    tu compiles le tout en test.exe

    ensuite avec un editeur de texte quelconque, tu ecris le fichier batch suivant dans le meme repertoire que l'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
     
    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
    ensuite tu ouvres une fenetre dos, tu te places dans le repertoire de test.exe et tu lances ton fichier batch

  9. #29
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Marche pas

    Le batch continue sans attendre la fin de l'EXE...

    Donc... Pas d'erreur à chaque fois.

  10. #30
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut


    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.

  11. #31
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut
    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.

  12. #32
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Points : 87
    Points
    87
    Par défaut
    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 :


    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
    Bonne soirée.

    Coin.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [PHP 5.0] Programmer l'exécution d'une Page
    Par Narutosaad dans le forum Langage
    Réponses: 2
    Dernier message: 29/07/2010, 10h03
  2. Exécution lorsque une valeur change parmi une plage
    Par Janny dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/05/2009, 13h56
  3. Réponses: 3
    Dernier message: 14/12/2006, 11h46
  4. [Débutant] Utilisation d'une valeur de la zone de texte dans une requête
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 13/07/2006, 10h42
  5. Réponses: 7
    Dernier message: 26/10/2004, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo