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 :

CreateProcess, 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 CreateProcess, ShellExecute
    Bonjour

    Je voudrais éxécuter un Process sous cmd donc je tape cette commande

    ShellExecute(0,'open',PChar('cmd'),nil,'c:\',SW_SHOW);

    après je voudrais à partir de delphi écrire dans mon process ouvert cmd

    je voudrais taper cela automatiquement afin d'avoir
    c:\plink.exe -ssh cat@ldap


    ex
    C:\>plink -ssh cat@ldap
    Using username "cat".
    cat@ldap's password:
    Last login: Wed May 3 09:05:37 2006 from 10.0.10.11
    Sun Microsystems Inc. SunOS 5.9 Generic May 2002
    Sun Microsystems Inc. SunOS 5.9 Generic May 2002)

    après il me demanderais mon pass que je rentrerais encore via delphi
    Comment envoyer des informations dans cmd en fait ...


    quelqu'un pourrais t'il m'aider ?

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Salut, j'ai donné une réponse ici :
    http://www.developpez.net/forums/sho...57&postcount=9

    Dans ton cas, celà donnera :
    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
    //Procedures pour simuler l'appui de touches -DEBUT
     procedure SimulateKeyDown(Key : byte);
     begin
       keybd_event(Key, 0, 0, 0);
     end;
     
     procedure SimulateKeyUp(Key : byte);
     begin
       keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
     end;
     
     procedure SimulateKeystroke(Key : byte; extra : DWORD);
     begin
       keybd_event(Key, extra, 0, 0);
       keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);
     end;
     
     procedure SendKeys(s : string);
     var i : integer;
         flag : bool;
         w : word;
     begin
       flag := not GetKeyState(VK_CAPITAL)=1;
       if flag then SimulateKeystroke(VK_CAPITAL, 0);
       for i :=1 to Length(s) do
       begin w := VkKeyScan(s[i]);
       if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF))
       then begin
           if HiByte(w)=1
           then SimulateKeyDown(VK_SHIFT);
           SimulateKeystroke(LoByte(w), 0);
           if HiByte(w)=1
           then SimulateKeyUp(VK_SHIFT);
         end;
       end;
       if flag then SimulateKeystroke(VK_CAPITAL, 0);
     end;
     //Procedures pour simuler l'appui de touches -FIN
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShellExecute(0,'open',PChar('cmd'),nil,'c:\',SW_SHOW);
      Sleep(100); //petit temps d'attente
      SendKeys(' c:\plink.exe -ssh cat@ldap');
      Sleep(100); //petit temps d'attente
       SendKeys(' TonMotDePasse');
      //etc...
    end;
    Bidouilleuse Delphi

  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
    Merci cela fait exactement ceux que je veux

    Juste deux petites précisions

    - le '@' ne marche pas , j'ai essayé avec le code ASCiI 64 mais ... sans réponse il m'affiche un 'à'
    - Pour simuler la touche entrée, je rajoute quoi comme procédure ?

  4. #4
    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
    pour le return j'ai trouvé gràce à ton post (je n'arrivais pas à récupérer le code)

    SimulateKeystroke(VK_RETURN, 0);

    mais ill me reste le pb du '@'

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par cat1982
    pour le return j'ai trouvé gràce à ton post (je n'arrivais pas à récupérer le code)

    SimulateKeystroke(VK_RETURN, 0);

    mais ill me reste le pb du '@'
    A mon avis c'est AltGr+à, autrement dit Ctrl+Alt+à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimulateKeyDown(VK_CONTROL,0);
    SimulateKeyDown(VK_MENU,0);
    SimulateKeystroke(LoByte(VkKeyScan('à')), 0);
    SimulateKeyUp(VK_MENU,0);
    SimulateKeyUp(VK_CONTROL,0);
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimulateKeyDown(VK_CONTROL,0);
     SimulateKeyDown(VK_MENU,0);
     SendKeys('à',0);
     SimulateKeyUp(VK_MENU,0);
     SimulateKeyUp(VK_CONTROL,0);
    Bidouilleuse Delphi

  6. #6
    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
    Merci beaucoup tout marche

    juste un dernier petit truc si cele ne te dérange pas (sinon je passerais plus de temps à chercher) j 'aurais besoin de récupérer ceux qu'il s'affiche à l'écran

    donc le prog fait cela

    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
    68
    69
    70
    71
    72
    73
     
    procedure TFormSW.SimulateKeyDown(Key : byte);
     begin
       keybd_event(Key, 0, 0, 0);
     end;
     
     procedure TFormSW.SimulateKeyUp(Key : byte);
     begin
       keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
     end;
     
     
     procedure TFormSW.SimulateKeystroke(Key : byte; extra : DWORD);
     begin
       keybd_event(Key, extra, 0, 0);
       keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);
     end;
     
     procedure TFormSW.SendKeys(s : string);
     var i : integer;
         flag : bool;
         w : word;
     begin
       flag := not GetKeyState(VK_CAPITAL)=1;
       if flag then SimulateKeystroke(VK_CAPITAL, 0);
       for i :=1 to Length(s) do
       begin w := VkKeyScan(s[i]);
       if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF))
       then begin
           if HiByte(w)=1
           then SimulateKeyDown(VK_SHIFT);
           SimulateKeystroke(LoByte(w), 0);
           if HiByte(w)=1
           then SimulateKeyUp(VK_SHIFT);
         end;
       end;
       if flag then SimulateKeystroke(VK_CAPITAL, 0);
     end;
     //Procedures pour simuler l'appui de touches -FIN
     
    procedure TFormSW.BitBtn1Click(Sender: TObject);
    var reponse : string;
    begin
    with BDDModule do begin
      //ShellExecute(0,'open',PChar('yop'),nil,nil,SW_SHOW);
      ShellExecute(0,'open',PChar('cmd'),nil,'P:\',SW_SHOW);
      Sleep(100); //petit temps d'attente
      //SendKeys(#64);
      //SimulateKeystroke(VK_RETURN, 0);
      SendKeys('plink.exe -ssh ldapsup');
      SimulateKeyDown(VK_CONTROL);
      SimulateKeyDown(VK_MENU);
      SendKeys('à');
      SimulateKeyUp(VK_MENU);
      SimulateKeyUp(VK_CONTROL);
      SendKeys('cat');
      SimulateKeystroke(VK_RETURN, 0);
      Sleep(10); //petit temps d'attente
      SendKeys('catseyes');
      SimulateKeystroke(VK_RETURN, 0);
      Sleep(5000);
      SendKeys('cd tom');
      SimulateKeystroke(VK_RETURN, 0);
      Sleep(100);
      SendKeys('go');
      SimulateKeystroke(VK_RETURN, 0);
      Sleep(200);
      SendKeys('1');
      SimulateKeystroke(VK_RETURN, 0);
      Sleep(100);
      SendKeys(MID_Query.Fields.Fields[2].AsString);
      SimulateKeystroke(VK_RETURN, 0);
     end;
    et la cela m'affiche
    --Debut Analyse--
    --Debut Client--
    ncontrat: 1250599
    uid: cdubus002v
    --Fin Client--
    --Debut Offres--
    nlibelleoffre: NOOSNET4M6
    ntypeequipement: 666
    nmacaddress: 00:11:E6:6A:B6:12
    masteruid: cdubus002v
    nnumerooi: 11276515
    cn: cdubus002v_1
    --Fin Offres--
    --Debut Modems--
    00:11:E6:6A:B6:12|cdubus002v_1|noosnet4m4_401
    --Fin Modems--
    --Debut Mails--
    cdubus002v_1=mamounn1@noos.fr
    --Fin Mails--
    --Fin Analyse--
    Et je voudrais récupérer tout ceux qui est entre début Analyse et Fin Analyse

    Désolé je viens d'apprendre le delphi, il y 'a deux semaines donc je galère encore un peu
    [Modération]
    Merci de penser aux balises CODE et QUOTE. Pedro
    [/Modération]

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

Discussions similaires

  1. ShellExecute / CreateProcess / ShellExecuteEx
    Par wizdom dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 17/02/2010, 10h19
  2. CreateProcess et ShellExecute
    Par Samyhijodelaluna dans le forum MFC
    Réponses: 23
    Dernier message: 11/05/2006, 16h17
  3. [EXECUTION] CreateProcess / ShellExecute
    Par jmdeffet dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 14/10/2004, 10h33
  4. CreateProcess + paramètres passé
    Par obione dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 20/03/2003, 17h25
  5. Réponses: 2
    Dernier message: 18/11/2002, 09h12

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