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 :

[VB6]Executer un programme externe et récuperer les sorties


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut [VB6]Executer un programme externe et récuperer les sorties
    Bonjour,

    J'ai écrit un bout de code en visual basic 6 qui permet d'exécuter un programme externe. Ce programme est un exe, utilisable en lignes de commandes, qui permet de transférer des données vers un GPS. Serait-il possible de récupérer les différentes sorties du fichier exe afin de savoir si le transfert s'est bien déroulé ou non.

    Merci d'avance.

    Thibaut.

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    comment compte tu faires tes sorties?

    si ça ne doit pas être particulièrement rapide, tu peux faire ça par ficier interposé, c'et pratique et facile.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    C'est un programme DOS (gpsbabel). J'aimerais juste récupérer le contenu de la fenêtre "Invites de commandes" pour voir si le transfert si bien effectué.

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    tu le lance comment?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    J'utilise une procédure que j'ai récupérée sur internet :

    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
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Private Const STILL_ACTIVE = &H103
    Private Const PROCESS_QUERY_INFORMATION = &H400
     
    '
    ' Lance un executable et attend la fin de celui-ci
    '
    Public Sub ShellWait(ByVal JobToDo As String, mode As String)
    ' déclaration des variables
    Dim hProcess As Long, RetVal As Long
    ' lance le programme exe
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, mode))
    ' boucle tant que le programme exe n'a pas fini
    Do
        GetExitCodeProcess hProcess, RetVal
        DoEvents
        Sleep 100
    Loop While RetVal = STILL_ACTIVE
    End Sub
    Ce qui donne, dans mon cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellWait chemin & command, vbMinimizedNoFocus

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Personne n'a d'idées ?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai bien une idée mais elle a de fortes chances de ne pas fonctionner

    Call shell("Program.exe > Fichier.???")

    On faisait ça dans le temps (!!!) mais c'était au temps du dos

    Bonne chance

    NB - En outre il y a de fortes chances pour que les données en sortie soient cryptées

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    C'est justement ce que j'étais suis en train de tester. Finalement, la ligne de commande que j'utilise est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellWait chemin & command & " >out.txt 2>error.txt", vbMinimizedNoFocus
    Il me suffit alors de lire le fichier error.txt pour récupérer les éventuelles erreurs.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Par contre cela fonctionne via la console de commande mais pas via le code...
    Une idée ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    La seule solution est de créer un fichier batch et puis d'éxécuter celui-ci.

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

Discussions similaires

  1. [C#] Comment executer un programme externe ?
    Par Worldofdada dans le forum C#
    Réponses: 7
    Dernier message: 11/02/2009, 14h36
  2. Exécuter un programme externe et détecter sa terminaison
    Par leserapheen dans le forum Pascal
    Réponses: 10
    Dernier message: 04/10/2006, 17h19
  3. [VB6]Executer un programme en vb6 des le lancement
    Par cedre22 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/02/2006, 10h15
  4. [Système] Executer un programme externe depuis un scripte php
    Par Scorpion Rouge dans le forum Langage
    Réponses: 1
    Dernier message: 24/01/2006, 11h59
  5. [VB6] Exécuter un programme en tant que...
    Par Le_Tolier dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 28/05/2004, 14h53

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