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 :

Emulateur cmd.exe


Sujet :

Langage Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Emulateur cmd.exe
    bonjour

    je vais essayer d'être claire et précis

    je veux faire une sorte d'émulateur cmd.exe

    c'est à dire que mon prog delphi pourra faire TOUT ce que fait cmd.exe (je parle des commande que l'on tape lorsqu'on ouvre cmd.exe genre : dir, créer un dossier, supprimer un fichier ect ...)

    je veux le faire grace à un mémo pour afficher ce que normalement cmd.exe affiche et un edit et un boutton pour envoyer les commandes

    même si le programme utilise "cmd.exe" (dans le faire apparaitre biensur) l'user de mon prog ne doit pas voir de cmd ouvert ou d'écran dos

    j'ai trouvé une source qui à l'air bien, mais j'arrive à faire qu'un DIR

    peut être c'est parce que je n'ai pas bien compris la syntaxe :/

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    procedure RunDosInMemo(DosApp: string; AMemo:
    TMemo);
    const
      ReadBuffer = 2400;
    var
      Security: TSecurityAttributes;
      ReadPipe, WritePipe: THandle;
      start: TStartUpInfo;
      ProcessInfo: TProcessInformation;
      Buffer: Pchar;
      BytesRead: DWord;
      Apprunning: DWord;
    begin
      with Security do
      begin
        nlength := SizeOf(TSecurityAttributes);
        binherithandle := true;
        lpsecuritydescriptor := nil;
      end;
      if Createpipe(ReadPipe, WritePipe,
        @Security, 0) then
      begin
        Buffer := AllocMem(ReadBuffer + 1);
        FillChar(Start, Sizeof(Start), #0);
        start.cb := SizeOf(start);
        start.hStdOutput := WritePipe;
        start.hStdInput := ReadPipe;
        start.dwFlags := STARTF_USESTDHANDLES +
          STARTF_USESHOWWINDOW;
        start.wShowWindow := SW_HIDE;
        if CreateProcess(nil,
          PChar(DosApp),
          @Security,
          @Security,
          true,
          NORMAL_PRIORITY_CLASS,
          nil,
          nil,
          start,
          ProcessInfo) then
        begin
          repeat
            Apprunning := WaitForSingleObject
              (ProcessInfo.hProcess, 100);
            Application.ProcessMessages;
          until (Apprunning <> WAIT_TIMEOUT);
          repeat
            BytesRead := 0;
            ReadFile(ReadPipe, Buffer[0],
              ReadBuffer, BytesRead, nil);
            Buffer[BytesRead] := #0;
            OemToAnsi(Buffer, Buffer);
            AMemo.Text := AMemo.text + string(Buffer);
          until (BytesRead < ReadBuffer);
        end;
        FreeMem(Buffer);
        CloseHandle(ProcessInfo.hProcess);
        CloseHandle(ProcessInfo.hThread);
        CloseHandle(ReadPipe);
        CloseHandle(WritePipe);
      end;
    end;
    procedure TForm1.btnCaptureDosWindowClick(Sender: TObject);
    begin
      RunDosInMemo('cmd.exe /C dir c:', Memo1);
    end;
    merci d'avance pour l'aide

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     RunDosInMemo('cmd.exe /c "'+Edit1.Text+'"',Memo1);
    L'emploi des guillemets est nécessaire !

    Le code marche bien, a part quelques commande du genre :
    cd /..
    un commande qui n'existe pas.
    et bien d'autres...
    l'application se bloque !

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    justement pkoi l'application se block ? :s

    je voudrais pouvoir tout faire comme cmd

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde si ce composant ne résoud pas ton pb :
    http://delphi.developpez.com/sources...rectionConsole

  5. #5
    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
    Ce n'est pas un émulateur mais une redirection...
    Et j'ai le même problème malgré les innombrables exemples que l'on m'a donné...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Pedro204
    Ce n'est pas un émulateur mais une redirection...
    C'est vrai, d'ou ma formulation "regarde si".

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    wi je sais que le mot émulateur n'était pas très aproprié, mais ctai pour mieu expliquer

    peut être que vous pourrez m'aider ici

    http://www.developpez.net/forums/vie...206125#2206125

    merci

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    évite les jeux de piste avec les posts tu aurais dû continuer ici ou placer ton post en résolu, ce que j'ai fait.

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

Discussions similaires

  1. dos prompt in window cmd.exe
    Par Philippe299 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 22/03/2006, 15h40
  2. [C#] Comment lancer un process dans cmd.exe ?
    Par freddyboy dans le forum C#
    Réponses: 2
    Dernier message: 23/01/2006, 12h45
  3. Réponses: 6
    Dernier message: 27/12/2005, 13h48
  4. [Système]Probleme avec un chemin dans cmd.exe
    Par Sarrus dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/09/2005, 08h31
  5. Mon cmd.exe cherche d'abord cmd.com
    Par marcus333 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 29/08/2005, 11h27

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