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

Delphi Discussion :

Récupérer des informations (JVCL)


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Par défaut Récupérer des informations (JVCL)
    Bonjour,

    Je souhaiterais récupérer les informations d'une fênetre DOS.
    Après plusieurs essais, je me suis tourné vers le TJvCreateProcess

    Mais j'arrive à créer le process mais pas à récupérer les infos

    Est - ce bien par la métode JvCreateProcess1RawRead ?

    Comment est ce que cela fonctionne ?

    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
     
    procedure TFormSW.BitBtn1Click(Sender: TObject);
    begin
      try
          JvCreateProcess1.ApplicationName := 'plink.exe';
         // JvCreateProcess1.CurrentDirectory := ExtractFileDir(Application.GetNamePath);
          JvCreateProcess1.CommandLine := ' -ssh ldapsup@AUBSUP29';
          JvCreateProcess1.Run;
          JvCreateProcess1.WriteLn('alice006');
          sleep(500);
          JvCreateProcess1.WriteLn('cd cat');
          JvCreateProcess1.WriteLn('runmed')
       finally
    //  JvCreateProcess1.Free;
           end;
    end;
     
    procedure TFormSW.JvCreateProcess1Read(Sender: TObject; const S: string;
        const StartsOnNewLine: Boolean);
    begin
      // C is the Form Feed char.
      if S = #$C then
      begin
        // Clear screen
        ListBox1.Clear;
      end
      else if StartsOnNewLine then
        // Add new line1
        ListBox1.Items.Add(S)
      else
        // Change last line
        ListBox1.Items[ListBox1.Count - 1] := S;
    end;
    Il marche jusqu'au JvCreateProcess1.WriteLn('alice006');
    mais après il me fait plus rien il me rentre pas dans le répertoire cat


    Merci

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 703
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 703
    Par défaut
    Citation Envoyé par cat1982
    Je souhaiterais récupérer les informations d'une fênetre DOS.
    Je n'utilise pas la JVCL, mais sinon, j'ai trouvé ça :
    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
     
    procedure GetConsoleText(Command:String; var Result:String);
    const 
         LENBUFF = 512; // Augmente le si tu as des problèmes 
    var 
       hReadPipe, hWritePipe: THandle; 
       sa : TSecurityAttributes; 
       si : TStartupInfo; 
       pi : TProcessInformation; 
       lpBuffer    : array[0..LENBUFF] of char; 
       BytesRead   : Cardinal; 
       BytesToRead : integer; 
    begin 
         sa.nLength              := sizeof( sa ); 
         sa.lpSecurityDescriptor := nil; 
         sa.bInheritHandle       := True; 
         if not CreatePipe( hReadPipe, hWritePipe, @sa, 0 ) then begin 
            Application.MessageBox( pChar('Error creation Pipe' ), 'Error',IDOK ); 
            exit; 
         end; 
         FillChar( si, sizeof(si), 0 ); 
         si.cb          := sizeof( si ); 
         si.dwFlags     := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; 
         si.wShowWindow := SW_HIDE; 
         si.hStdInput   := 0; 
         si.hStdOutput  := hWritePipe; 
         si.hStdError   := hWritePipe; 
         if not CreateProcess( nil, pChar( Command ), nil, nil, true, 0, nil, nil, si, pi ) then begin 
            Application.MessageBox( pChar('Error executing command' ), 'Error', IDOK ); 
            CloseHandle( hReadPipe ); 
            CloseHandle( hWritePipe ); 
            exit; 
         end; 
         CloseHandle( hWritePipe ); 
         BytesToRead := LENBUFF; 
         BytesRead := 0; 
     
        Result := ''; 
         While (True) do begin 
               lpBuffer := ''; 
               ReadFile( hReadPipe, lpBuffer, BytesToRead, BytesRead, nil ); 
               if BytesRead=0 then Break; 
               Result := Result + StrPas(lpBuffer); 
         end; 
     
         WaitForSingleObject( pi.hProcess, INFINITE ); 
         CloseHandle( pi.hProcess ); 
         CloseHandle( hReadPipe ); 
    end;
    PS : pas testé
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Par défaut
    j'ai déjà testé mais cela ne marche pas avec ce que je veux faire ...

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

Discussions similaires

  1. Récupérer des informations sur les connexions réseau
    Par Leobaillard dans le forum Delphi
    Réponses: 8
    Dernier message: 31/08/2006, 01h20
  2. Réponses: 4
    Dernier message: 26/07/2006, 10h38
  3. Récupérer des informations sur le matériel
    Par RaphAstronome dans le forum Windows
    Réponses: 5
    Dernier message: 31/03/2006, 15h32
  4. Récupérer des Informations sur un PC via un Réseau ?
    Par MaTHieU_ dans le forum Administration
    Réponses: 6
    Dernier message: 22/11/2005, 12h39
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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