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 :

[shell & VB] lancer une commande depuis VB


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 71
    Points
    71
    Par défaut [shell & VB] lancer une commande depuis VB
    Salut,

    J'ai un exécutable qui prend deux paramètres en entrée et me renvoie un entier.
    Je souhaite l'appeler depuis mon code VB. Je ne sais pas comment lancer cette exécutable et surtout comment récupérer mon résultat (= l'entier renvoyé par l'exe).

    Sous DOS, je fais:
    MonExecutable.exe arg1 arg2 <ENTREE>
    ---> entier

    comment faire pour lancer cette commande et récupérer mon résultat dans un Integer et pouvoir ce dernier dans le reste de programme VB.

    Merci

  2. #2
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Un sujet presque identique a été abordé dans le forum VBA Excel:
    http://www.developpez.net/forums/sho...ll#post3444087

    ça peut déjà t'éclairer un peu.

  3. #3
    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
    A essayer

    Copie le code suivant dans un module
    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
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    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 Const STILL_ACTIVE = &H103
    Private Const PROCESS_QUERY_INFORMATION = &H400
     
     
    Public Function LancePgm(PgmName As String) As Long
        Dim hTask As Long
        Dim hProcess As Long
        Dim ExitCode As Long
        hTask = Shell(PgmName, vbNormalFocus)
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hTask)
        Do
            Sleep 100
            DoEvents
            GetExitCodeProcess hProcess, ExitCode
        Loop While ExitCode = STILL_ACTIVE  'on attend que l'appi est active
        LancePgm = ExitCode
    End Function
    Vois le fonctionnement de shell pour la syntaxe de PgmName

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 71
    Points
    71
    Par défaut
    Est ce que tu peux m'expliquer ton code STP? Je suis débutant en VB et il y a des trucs qui m'échappent...

    Sinon moi j'ai pensé à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Shell "cmd.exe" & "/c MonExe.exe arg1 arg2 > c:FichierResultat.txt"
    Cela me permet d'obtenir mon résultat (un entier) écrit dans le fichier MonResultat.txt. Y'a-t-il un moyen de le récupérer dans une variable locale de la fonction VB qui lance cette commande? un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // c'est une syntaxe algorithmique, je ne sais pas si c'est faisable ou pas en VB
    MaVariable Locale = Shell "cmd.exe" & "/c MonExe.exe arg1 arg2 "
    Merci

  5. #5
    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
    Si tu es débutant, sache que ce que tu demandes est du niveau expert. En effet, s'il est assez facile de lancer un exécutable, recupérer l' ERRELEVEL ne peut se faire que via les api de windows.
    La fonction shell renvoie un identificateur du programme lancé, ce qui ne te sert à rien.

    Avec le module que j'ai donné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaVariable Locale = LancePgm("MonExe.exe arg1 arg2 ")

Discussions similaires

  1. Lancer une commande shell (openssl) depuis une programme java
    Par hnsfr dans le forum Général Java
    Réponses: 1
    Dernier message: 23/04/2012, 10h21
  2. lancer une commande dos en shell
    Par Patnel dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/04/2010, 14h04
  3. Lancer une commande Perl dans un script Shell
    Par Ryo_san dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 02/06/2008, 11h01
  4. Lancer une commande (type ligne de commande) depuis programme Java
    Par rprom1 dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 15/12/2006, 12h06
  5. Shell - Impossible de lancer une commande
    Par marocleverness dans le forum Linux
    Réponses: 2
    Dernier message: 05/06/2006, 10h14

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