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.NET Discussion :

Récupérer sortie commande externe (exiftool.exe)


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Récupérer sortie commande externe (exiftool.exe)
    Bonjour,
    je recherche à lancer une commande externe (exiftool.exe) dans une fenetre DOS et récupérer les données exif dans mon application VB.Net



    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
    Imports System.Text
     
     
    Public Class Form1
     
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            OpenFileDialog1.ShowDialog()
            TextBox1.Text = Exif_External(OpenFileDialog1.FileName)
        End Sub
     
        Public Function exif_External(ByVal ImageFile As String)
     
            Dim exifExe As String = "exiftool.exe"
            Dim ApplicationDir As String = Application.StartupPath.ToString
            Dim commandStr = ""
            Dim retString As String = ""
            Dim exifOutputFile As String = ImageFile + ".txt"
     
     
            commandStr = Chr(34) + ApplicationDir + "\" + exifExe + Chr(34) + " " + Chr(34) + ImageFile + Chr(34) + " > " + Chr(34) + exifOutputFile + Chr(34)
            Shell(commandStr, AppWinStyle.Hide)
     
            Return "Rien pour le moment"
        End Function
     
    End Class


    Lors de l'éxécution la variable commandStr vaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "c:\Users\pierre\Visual Basic\exifTool_test\exifTestTool\exifTestTool\bin\Debug\exiftool.exe" "C:\Users\pierre\Visual Basic\exifTool_test\exifTestTool\exifTestTool\clock.JPG" > "C:\Users\pierre\Visual Basic\exifTool_test\exifTestTool\exifTestTool\clock.JPG.txt"
    Si j'ouvre une fenetre dos et lance la commande (commandStr) manuellement tout fonctionne comme prévu.
    Mais dans mon code le fichier texte n'est pas créé...Le programme reste bloqué. Il ne me crée pas le fichier txt qui contient les données exif.
    Ou est l'erreur? Pourquoi je ne peut pas lancer la commande depuis mon application?


    Y aurait il une autre méthode "plus propre" pour lancer un programme en ligne de commande et récupérer la sortie dans mon vb sans passer par la redirection de la sortie dans un fichier (le > )


    Merci pour vos réponses

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Pour ceux que ça interesse.
    Plutot que de passer par une commande Shell, on paramètre, puis lance un Process dans une fenêtre cachée et récupère la sortie standard dans un String()

    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
     
    Function CMDLineApplication(ByVal exePath As String, Optional ByVal Arguments As String = "") As String()
     
            Dim Proc As New Process()
     
            Proc.StartInfo.FileName = exePath
            Proc.StartInfo.Arguments = Arguments
            Proc.StartInfo.UseShellExecute = False
            Proc.StartInfo.RedirectStandardOutput = True
            Proc.StartInfo.CreateNoWindow = True
            Proc.Start()
     
            Dim cmdOutput As String = Proc.StandardOutput.ReadToEnd()
            Proc.WaitForExit()
     
            Dim cmdOutputs As String()
            cmdOutputs = cmdOutput.Split(vbLf)
            Return cmdOutputs
     
     
        End Function
     
    textBox1.Lines = CMDLineApplication("c:\test\exiftool.exe","c:\test\testimg.gif")

    Voilà j'espère que ça servira à d'autres

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

Discussions similaires

  1. Récupérer Focus après lancement commande externe
    Par franck06 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 06/05/2011, 09h50
  2. [PowerShell] émulation de la commande externe attrib.exe
    Par I'm_HERE dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 28/12/2010, 09h39
  3. Récupérer sortie d'un programme externe
    Par EricPellegrini dans le forum Général Python
    Réponses: 7
    Dernier message: 16/05/2007, 20h11
  4. [Lazarus] Exécution de commande externe
    Par SaintShakaJin dans le forum Lazarus
    Réponses: 3
    Dernier message: 26/04/2005, 13h13
  5. Réponses: 5
    Dernier message: 19/04/2005, 08h50

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