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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    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.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    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 chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Qu'est ce que le CibleHandle et comment savoir si on doit utiliser keyDown ou keyup?

  4. #4
    Membre Expert 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
    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

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    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 éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

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

    Merci

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

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    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
    Membre éclairé Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    641
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    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....

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 641
    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 ???

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

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    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
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    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

+ 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