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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Par défaut Remonter une valeur d'un programme VB exécuté d'une fenêtre DOS
    Bonjour à tous,

    Un programme me permet d'exécuter des exécutables (créer avec VB6).
    Ce programme lance en vérité des commandes DOS.

    Je voudrais, lorsqu'une erreur est généré par un exécutable Visual Basic, que mon programme renvoie une donnée erreur (N° + Description) dans la fenêtre DOS dans lequel il a été exécuté.

    Le casse tête est ; je sais récupérer les erreurs VB, mais je ne sais pas comment faire remonter cette erreur.
    Je sais que l'on peut passer une commande DOS sur un programme VB, mais je voudrais faire l'inverse, qu'il renvoie une donnée pour dire qu'il ne c'est pas exécuté correctement.

    J'espère être clair, si ce n'est pas le cas ne pas hésiter à me poser des questions.

    Merci d'avance.

    Coin.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Un programme me permet d'exécuter des exécutables (créer avec VB6).
    est-ce les exécutables qui sont créer avec VB6 ?
    est-ce le programme qui lance des exécutables qui a ete créer avec VB6 ?
    la stratégie depandra pour une bonne part de ces réponces.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé

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

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

    Se sont les exécutables qui sont créé en VB6.

    Je me demandais si il n'existe pas une fonction du genre Return que l'on puisse utilisé dans le programme VB pour que celui renvoie une valeur.

    Merci d'avance
    Coin.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    peut-être existe-t-il des méthodes d'écriture de console ?

  5. #5
    Membre confirmé

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Par défaut
    Citation Envoyé par Vld44
    méthodes d'écriture de console ?


    heu!!! C'est à dire ???

    Coin.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Bah tu as un objet qui représente la ligne de commande comme n'importe quelle form ... Peut-être qu'il existe des APIs qui permettent d'écrire ce que tu veux dans cette "console" (la ligne de commande c:\ si tu veux)

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Bonjour Delbeke

    pour Coin
    Sur un Form, un Label, 2 CommandButton
    avec ce petit bout de code,
    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
    Option Explicit
     
    Private Sub Command1_Click()
    Dim ShL
    ShL = Shell("cmd.exe", vbNormalFocus)
    End Sub
     
    Private Sub Command2_Click()
    Dim A As Integer, B As Integer, C As Integer
    Dim Msg$
    A = 10: B = 0
    On Error Resume Next
    C = A / B
    If Err <> 0 Then
     Msg$ = CStr(Err.Number) & " - " & Err.Description
     Err.Clear
     Msg$ = Msg$ & " Appli " & Me.Caption
     Msg$ = "SET MeeRR=" & Msg$
     DoEvents
     On Error GoTo GestErr
     AppActivate "cmd.exe", True
     SendKeys Msg$ & Chr$(13), True
     Label1 = "C'est fait"
    End If
    Exit Sub
    GestErr:
    Label1 = "pas bon"
    End Sub
    lancer la fenêtre Dos avec le bouton Command1
    puis,
    clicker le bouton Command2
    dans la fenêtre DOS apparait
    ----------------------écran DOS------------------------------------------
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\WINDOWS\system32>SET MeeRR=11 - Division par zéro

    --------------------------------------------------------------------------

    puis en reprenant la main dans la fenêtre DOS pour verifier, je passe set M
    pour que DOS me retourne la valeur de la variable MeeRR

    ------------------------écran DOS----------------------------------------
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\WINDOWS\system32>SET MeeRR=11 - Division par zéro

    C:\WINDOWS\system32>set M
    MeeRR=11 - Division par zéro

    C:\WINDOWS\system32>
    --------------------------------------------------------------------------

    la variable DOS MeeRR devrait etre recuperable par ton programme de lancement non?

    autrement la je calle , je ne vois plus comment t'aider
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre confirmé

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Par défaut
    à vous deux,

    ProgElecT,

    Ton code fonctionne bien quand on le prend brut....
    J'ai même créé l'exécutable, puis le lancer à partir d'une fenêtre DOS, lorsque j'appuie sur mon bouton 2 le message est bien retourné dans la Fenêtre DOS.

    En revanche si je veux l'adapter comme mes programmes, là ça ne foctionne plus, aucun message n'apparait dans la fenêtre DOS, et le processus reste actif.

    Voici ma modif :
    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
    Private Sub form_load()
    Dim A As Integer, B As Integer, C As Integer
    Dim Msg$
    A = 10: B = 0
    On Error Resume Next
    C = A / B
    If Err <> 0 Then
    MsgBox "erreur"
     Msg$ = CStr(Err.Number) & " - " & Err.Description
     Err.Clear
     Msg$ = Msg$ & " Appli " & Me.Caption
     Msg$ = "SET MeeRR=" & Msg$
     DoEvents
     
     On Error GoTo GestErr
     AppActivate "cmd.exe", True
     SendKeys Msg$ & Chr$(13), True
     Label1 = "C'est fait"
     
    End If
    End
    Exit Sub
    GestErr:
    Label1 = "pas bon"
    End
    End Sub
    Biensûr je crée un exécutable que je lance à partir d'une fenêtre DOS, et là ça ne marche pas....

    Est-ce que tu vois pourquoi?

    Merci.

    Coin.

  9. #9
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Si le programme boucle, c'est que le nom du titre de la fenêtre DOS appelé par AppActivate n'est pas bon.
    Il faudrait être sûr du nom du titre de la fenêtre DOS, surtout que AppActivate "TitreFenetre", True, conduit a repeter indefiniment la commande AppActivate.
    Une idée , comme sa, resterait peut être une possibilité de faire rechercher le titre de cette fenêtre DOS par le programme qui à créé l'erreur, a condition qu'il n'y ai qu'une seul fenêtre DOS en cours, ou au moins un mot du titre soit connue .... .
    Le titre de la fenêtre DOS est-il toujours le même, ou un mot apparet-il toujours dans ce titre?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre confirmé

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 95
    Par défaut
    Le problème ne vient pas du nom de la fenêtre DOS, car lorsque je cré un exécutable de ton programme (pas charger dans le load)) cela fonctionne :
    Le message apparaît dans la fenêtre dos (d'où j'ai lancé l'exécutable) quand j'appuie sur le bouton 2.

    Le problème viendrai plus du fait de mettre cette instruction dans le sub load du formulaire !!!

    Est ce que le faite de mettre l'instruction dans le load me ferai boucler mon programme.....

    Coin.

  11. #11
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    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
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.

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