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

Langage Delphi Discussion :

Récupérer les informations d'un ShellExecute


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Récupérer les informations d'un ShellExecute
    Bonjour

    Je lance en ShellExecute un exe par "cmd"

    Il me renvoie dans cette fenetre DOS plusieurs informations que j'ai besoin de connaitre.

    Comment récupérer ses informations de cette fenêtre ?

    Merci

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Inspire toi de ce thread http://www.developpez.net/forums/sho...edirection+DOS : il y a un code qui permet de rediriger la sortie DOS vers un TMemo. Il ne te reste plus qu'à récupérer son contenu

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Je n'y arrive pas ... (exemple pour ipconfig)

    voila mon 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    procedure TFormSW.BitBtn1Click(Sender: TObject);
    var
     PipeIn  :THandle;
     PipeOut :THandle;
     StartupInfo: TStartupInfo;
     ProcessInfo: TProcessInformation;
     Buffer: array[0..4096] of Char;
     NbRead: DWord;
     cmd:string;
     txt:TStrings;
    begin
    with BDDModule do begin
    // Créer un pipe d'entrées/sorties
     CreatePipe(PipeIn,PipeOut,nil,0);
    // Créer le process en redirigeant les E/S
     FillChar(StartupInfo, SizeOf(TStartupInfo),0);
     StartupInfo.cb         :=SizeOf(TStartupInfo);
     StartupInfo.dwFlags    :=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
     StartupInfo.wShowWindow:=SW_HIDE;
     StartupInfo.hStdInput  :=PipeIn;
     StartupInfo.hStdOutput :=PipeOut;
     StartupInfo.hStdError  :=PipeOut;
     CreateProcess(nil,PChar('cmd'),nil,nil,True,0,nil,'c:\',StartupInfo,ProcessInfo);
     // attendre la fin du process
      WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
     Sleep(100);
     SendKeys('ipconfig');
     SimulateKeystroke(VK_RETURN, 0);
      Sleep(10); //petit temps d'attente
       // Fermer la sortie
     CloseHandle(PipeOut);
     //Sleep(500); // Laisse le temps au process en cours de suppression de s'arrêter
    // pour relire le tout
     while ReadFile(PipeIn,Buffer,4096,NbRead,nil) do txt.Add(Buffer);
    // fin
     CloseHandle(PipeIn);
    end;
    end;
    Le résultat est dans txt
    J'essaye de l'afficher mais aucune réponse
    [Balises CODE rajoutées par Pedro. Merci d'y penser à l'avenir]

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Non, ce n'est pas comme ça qu'il faut s'y prendre.
    La variable TStrings sert uniquement à utiliser un compo graphique pour afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ReadFile(PipeIn,Buffer,4096,NbRead,nil) do Memo1.Lines.Add(Buffer);

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Désolé je débute un peu

    Pour affihcer le contenu du mémo je fais quoi ?

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par cat1982
    Désolé je débute un peu

    Pour affihcer le contenu du mémo je fais quoi ?
    Ben normalement, si tu fais ce que je t'ai dit, ça s'affiche tout seul

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    bah voila mon code

    j'ai enlever le wait car cela bug sinon, mais j'ai rien qui s'affiche
    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
    40
    41
     
    procedure TFormSW.BitBtn1Click(Sender: TObject);
    var
     PipeIn  :THandle;
     PipeOut :THandle;
     StartupInfo: TStartupInfo;
     ProcessInfo: TProcessInformation;
     Buffer: array[0..4096] of Char;
     NbRead: DWord;
     cmd:string;
     txt:TStrings;
     Memo1 :TMemo;
    begin
    with BDDModule do begin
    // Créer un pipe d'entrées/sorties
     CreatePipe(PipeIn,PipeOut,nil,0);
    // Créer le process en redirigeant les E/S
     FillChar(StartupInfo, SizeOf(TStartupInfo),0);
     StartupInfo.cb         :=SizeOf(TStartupInfo);
     StartupInfo.dwFlags    :=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
     StartupInfo.wShowWindow:=SW_SHOW;
     StartupInfo.hStdInput  :=PipeIn;
     StartupInfo.hStdOutput :=PipeOut;
     StartupInfo.hStdError  :=PipeOut;
     CreateProcess(nil,PChar('cmd'),nil,nil,True,0,nil,'c:\',StartupInfo,ProcessInfo);
     // attendre la fin du process
      //WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
     Sleep(100);
     SendKeys('ipconfig');
     SimulateKeystroke(VK_RETURN, 0);
      Sleep(10); //petit temps d'attente
       // Fermer la sortie
     CloseHandle(PipeOut);
     Sleep(500); // Laisse le temps au process en cours de suppression de s'arrêter
    // pour relire le tout
     while ReadFile(PipeIn,Buffer,4096,NbRead,nil) do Memo1.Lines.Add(Buffer);
    // fin
     CloseHandle(PipeIn);
     terminateProcess(ProcessInfo.hProcess,0);
    end;
    end;

  8. #8
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 504
    Points : 2 776
    Points
    2 776
    Billets dans le blog
    10
    Par défaut
    recherche "rundosinmemo" sur google il y a un exemple je crois.

  9. #9
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/03/2006, 14h15
  2. []récupérer les informations de idtag d'un mp3
    Par mierkool dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/01/2006, 11h36
  3. Récupérer les informations d'un autre site
    Par deelyth dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/01/2006, 09h44
  4. Réponses: 5
    Dernier message: 23/12/2005, 19h19
  5. [IdHTTP] Récupérer les informations provenant d'une serveur
    Par newbie57 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/11/2005, 12h33

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