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 :

simulation d'envoi de touches clavier


Sujet :

Delphi

  1. #1
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut simulation d'envoi de touches clavier
    [delphi 7]
    salut;
    je voudrais savoir s'il existe une fonction permettant la simaulation de touches clavier, équivalent de sendkey en vb.
    Merci

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    keybd_event(...) ou un truc dans le genre

  3. #3
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    keybd_event(...) ou un truc dans le genre
    Merci pour la réponse, mais je recherche le moyen d'envoyer des touches étendues ex: CTRL+MAJ+1

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Citation Envoyé par liazidf Voir le message
    Merci pour la réponse, mais je recherche le moyen d'envoyer des touches étendues ex: CTRL+MAJ+1
    Même chose. Tu devras appeler 6x keybd_event. Tu peux également utiliser SendInput.

  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
    Salut !
    J'avais écrit une unité regroupant les différentes fonctions permettant de simuler frappes au clavier et clics de souris.
    Voir ici, chapitre II-A : http://delphi.developpez.com/defi/demineur/defieur/

    1) Tu télécharges les sources du projets.
    2) tu récupères l'unité "UnitSystem.pas" que tu ajoutes à ton projet.

    Voici les fonctions de simulation de touches qui sont proposées :
    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
    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;

    Pour Faire un Ctrl+Shift+E, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimulateKeyDown(VK_CTRL);
    SimulateKeyDown(VK_SHIFT);
    Senkeys('E');
    SimulateKeyUp(VK_SHIFT);
    SimulateKeyUp(VK_CTRL);
    Attention, ça ne fonctionne que sur la fenètre d'application active

    voilà !
    Bidouilleuse Delphi

  6. #6
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Salut,
    Merci à tous pour vos réponses, Merci LadyWasky pour votre projet, ceci ma permis de résoudre mon problème.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Maintenance nucléaire
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Maintenance nucléaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 36
    Points
    36
    Par défaut
    Salut à tous,

    Merci à LadyWaskyLadyWasky pour ces procédures.

    Elles m'ont été d'une très grande utilité.

    Naga

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    9 ans plus tard, ça doit lui faire plaisir

    ceci dit, je viens justement de publier un MacroPlayer

    https://github.com/tothpaul/Delphi/t.../MacroRecorder
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Maintenance nucléaire
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Maintenance nucléaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    9 ans plus tard, ça doit lui faire plaisir

    ceci dit, je viens justement de publier un MacroPlayer

    https://github.com/tothpaul/Delphi/t.../MacroRecorder
    Mieux vaut tard que jamais

    Il le verra peut être sait on jamais

    Merci pour le Player, je vais mater ça.

    Naga

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 041
    Points : 40 950
    Points
    40 950
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Naga2 Voir le message
    Il le verra peut être sait on jamais
    Il est un Elle et je ne sais pas si elle appréciera qu'on la prenne pour un Il
    C'est pourtant bien indiqué par le sigle de son profil
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Maintenance nucléaire
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Maintenance nucléaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Il est un Elle et je ne sais pas si elle appréciera qu'on la prenne pour un Il
    C'est pourtant bien indiqué par le sigle de son profil
    Oups, mea culpa.

    Je présente toutes mes excuses les plus humbles à Miss LadyWasky
    Pas taper.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/09/2008, 20h52
  2. Simuler l’appuie sur une touche du clavier
    Par Furius dans le forum C++
    Réponses: 2
    Dernier message: 26/09/2005, 17h15
  3. Simuler un appui de touche clavier
    Par Floo dans le forum Assembleur
    Réponses: 5
    Dernier message: 03/12/2004, 17h04
  4. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23
  5. envoie de touche clavier
    Par psfox2001 dans le forum DirectX
    Réponses: 1
    Dernier message: 13/03/2003, 21h56

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