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

Composants VCL Delphi Discussion :

Equivalent de SendKeys en Delphi


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut Equivalent de SendKeys en Delphi
    Salut,
    J'aimerai savoir s'il existe un équivalent de Sendkeys (méthode VB) en Delphi. Pour info, SendKeys simule les touches du clavier, en effet si j'écris un truc du genre SendKeys("{F1}"); en VB, ceci aura le même effet qu'un appui sur la touche F1 du clavier. Merci pour votre aide.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(CibleHandle, WM_KEYDOWN/WM_KEYUP, LaTouche, ...);
    Je ne vois que cela, cela me fait penser qu'en windev, lorsque l'on demande la génération de wrapper pour delphi, windev remplace tout par des simulations de touche ...

    voir WM_CHAR
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Qu'est ce que le CibleHandle et comment savoir si on doit utiliser keyDown ou keyup?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par AL1986
    Salut,
    J'aimerai savoir s'il existe un équivalent de Sendkeys (méthode VB) en Delphi. Pour info, SendKeys simule les touches du clavier, en effet si j'écris un truc du genre SendKeys("{F1}"); en VB, ceci aura le même effet qu'un appui sur la touche F1 du clavier. Merci pour votre aide.
    Sendkeys est une API windows , tu peut l'utilisé en delphi normallement sans la déclaré comme en vb
    voir faq et google
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Citation Envoyé par edam
    Sendkeys est une API windows , tu peut l'utilisé en delphi normallement sans la déclaré comme en vb
    voir faq et google
    c'est keybd_event l'api, et non Sendkeys et cela simule un WM_KEYDOWN/UP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure SendKey(Key : Integer);
    begin
      Keybd_Event(Key, 0, KEYEVENTF_KEYUP, 0);
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Justement, peut-on utiliser les API dans Turbo delphi 2006. Si oui, que dois declarer dans les uses ?

    Merci
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    bonjour

    Il y a aussi la fonction SendInput

    Code trouvé sur le 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
    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
    procedure SimulateKeyDown(MyKey: Cardinal);
    var
      MyInput: tagINPUT;
     begin
      MyInput.Itype          := INPUT_KEYBOARD;
      MyInput.ki.wVk         := MyKey;
      MyInput.ki.wScan       := MapVirtualKey(MyKey, 0);
     
      if (MyKey = VK_UP)
      or (MyKey = VK_DOWN)
      or (MyKey = VK_LEFT)
      or (MyKey = VK_RIGHT)
      or (MyKey = VK_HOME)
      or (MyKey = VK_END)
      or (MyKey = VK_PRIOR)
      or (MyKey = VK_NEXT)
      or (MyKey = VK_INSERT)
      or (MyKey = VK_DELETE) then
        MyInput.ki.dwFlags   := KEYEVENTF_EXTENDEDKEY
      else
        MyInput.ki.dwFlags   := 0;
      MyInput.ki.time        := 0;
      MyInput.ki.dwExtraInfo := 0;
     
      SendInput(1, MyInput, SizeOf(MyInput));
     end;
     
    procedure SimulateKeyUp(MyKey: Cardinal); //les 2 fonctions peuvent etre remplacée par une seule en ajoutant un parametre. 
    var
      MyInput: tagINPUT;
     begin
      MyInput.Itype          := INPUT_KEYBOARD;
      MyInput.ki.wVk         := MyKey;
      MyInput.ki.wScan       := MapVirtualKey(MyKey, 0);
     
      if (MyKey = VK_UP)
      or (MyKey = VK_DOWN)
      or (MyKey = VK_LEFT)
      or (MyKey = VK_RIGHT)
      or (MyKey = VK_HOME)
      or (MyKey = VK_END)
      or (MyKey = VK_PRIOR)
      or (MyKey = VK_NEXT)
      or (MyKey = VK_INSERT)
      or (MyKey = VK_DELETE) then
        MyInput.ki.dwFlags   := KEYEVENTF_KEYUP or KEYEVENTF_EXTENDEDKEY
      else
        MyInput.ki.dwFlags     := KEYEVENTF_KEYUP;
     
      MyInput.ki.time        := 0;
      MyInput.ki.dwExtraInfo := 0;
     
      SendInput(1, MyInput, SizeOf(MyInput));
     end;
    ps: Captain Anderson, ouvre ta propre discussion, ton post n'a rien à voir avec le sujet abordé.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Dans Delphi 7, facile, c'est l'unité "windows", je dirais pareil pour Turbo delphi 2006 ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Citation Envoyé par Fabrice ROUXEL 1

    ps: Captain Anderson, ouvre ta propre discussion, ton post n'a rien à voir avec le sujet abordé.
    PS: je suis a qq mètres de AL1986, et meme si je n'interviens pas directement sur son projet, j'essaie de l'aider quand je le peux. Merci pour ton intervention vieux....
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  10. #10
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Dans Delphi 7, facile, c'est l'unité "windows", je dirais pareil pour Turbo delphi 2006 ...
    Ce ne serait pas plutot ShellAPI ???
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Captain Anderson a écrit:
    PS: je suis a qq mètres de AL1986, et meme si je n'interviens pas directement sur son projet, j'essaie de l'aider quand je le peux. Merci pour ton intervention vieux....
    A quelques mètres... hmm ok. C'est vrai, c'est plus pratique de poster sur developpez que de se déplacer à son bureau.

  12. #12
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Citation Envoyé par Fabrice ROUXEL 1
    Captain Anderson a écrit:


    A quelques mètres... ok ok. C'est vrai, c'est plus pratique de poster sur developpez que de se déplacer à son bureau.
    J'ai des bequilles...j'ai tenté de m'enfuir du boulot par la fenêtre, ca n'a pas marché
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Citation Envoyé par Cpt Anderson
    Ce ne serait pas plutot ShellAPI ???
    on ne doit pas avoir la même unité car SendInput et Keybd_Event sont dans Windows.pas, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Citation Envoyé par ShaiLeTroll
    on ne doit pas avoir la même unité car SendInput et Keybd_Event sont dans Windows.pas, ...
    Exact, c'est moi qui délire....mille excuses
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  16. #16
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Le bout de code qui me fallait est :
    keybd_Event(VK_F1,0,0,0);
    Merci à tous
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

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

Discussions similaires

  1. Equivalent de Return en Delphi
    Par doderic dans le forum Langage
    Réponses: 2
    Dernier message: 22/10/2008, 21h02
  2. Equivalent de Application.OnException (Delphi) en VB
    Par lafaryan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/10/2007, 13h35
  3. equivalent de JMS en delphi
    Par Art19 dans le forum Delphi
    Réponses: 4
    Dernier message: 07/06/2007, 22h45
  4. [Language]Equivalent à l'instruction Delphi "with"
    Par FloMo dans le forum Langage
    Réponses: 17
    Dernier message: 22/12/2005, 00h41
  5. Equivalent du TPanel du Delphi en C++ ?
    Par Frederic dans le forum MFC
    Réponses: 1
    Dernier message: 29/10/2005, 01h30

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