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 :

Simuler Touche Clavier


Sujet :

Delphi

  1. #1
    Membre du Club Avatar de jcharles
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 52
    Points
    52
    Par défaut Simuler Touche Clavier
    Bonjour à Tous,

    Voici mon probléme, j'ai selectionner les caractéres d'un TEdit et je dois simuler l'appui de la Touche F12 sans perdre le Focus de mon TEdit avec les caractéres Selectionner.

    Merci d'avance pour vos reponses.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Essayer un SendMessage avec WM_keyDown (enfin je crois que c'est key down)

  3. #3
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Comme dit Tardiff Jean-François.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        SendMessage(activecontrol.handle, WM_KEYDOWN, VK_F12, 0);
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    j'ai egalement besoin de cette information et debutant sur le langage Pascal je n'arrive pas a utiliser ceci (en rouge sont soulignee mes erreur par borland):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(activecontrol.handle, WM_KEYDOWN, VK_R, 0);
    cependant avant de voire cette rubrique dans le forum j'ai mis en place ceci (je doit simuler l'appuie de la combinaison ALT+R):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      sleep(100);
      keybd_event(VK_LMENU, 0, 0, 0);
      keybd_event(Word('R'), 0, 0, 0);
      sleep(100);
      keybd_event(Word('R'), 0, KEYEVENTF_KEYUP, 0);
      keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);

    Merci pour votre aide.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Activecontrol est le Tcontrol qui doit lancer l'événement .

    Par exemple si voulez que simuler un événement lancer par le TEdit nommé Edit1 , c'est le handle de Edit1.

    Les touches VK_... sont les "virtual keys". Ce sont les équivalent des touches à envoyer à l'aide des messages. Elles sont dans l'unité Windows.
    Les virtual Key sont aussi ce qui est utilisé a la réception des messages.

    Se sont des numero et non des lettres (voir les fonction ORd est asc)

    Regarder aussi a cette adresse http://tcharles.developpez.com/simul/?delphi=1

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pardonne moi, je n'ais pas saisit ton explication. En effet j'ai commencer a me pencher sur ce langage hier et j'ai un programme a faire au plus vite.

    j'explique, je doit faire en sorte que l'ordinateur execute tout seul une combinaison de touches car par la suite il y auras ni clavier, ni souris d'installer. De plus je n'ais pas le choix du langage.

    Voici ou j'en suis, si quelqu'un peut m'expliquer qu'elles sont mes erreur je lui en serait reconnaissant :

    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
    unit AppletModule1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, CtlPanel;
     
    type
      TAppletModule1AppletModule = class(TAppletModule)
      private
      { private declarations }
      protected
      { protected declarations }
      public
      { public declarations }
      end;
     
    var
      AppletModule1AppletModule: TAppletModule1AppletModule;
      hFore: HWND;
    implementation
     
     
     
    begin
      hFore := GetForegroundWindow();
     
      //SendMessage(activecontrol.AppletModule1AppletModule, WM_KEYDOWN, VK_R, 0);
     
      sleep(100);
      keybd_event(VK_LMENU, 0, 0, 0);
      keybd_event(Word('R'), 0, 0, 0);
      sleep(100);
      keybd_event(82, 0, KEYEVENTF_KEYUP, 0);
      keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);
    end.
    A ce que j'ai compris, 82 = VK_R = word ('R')
    Je me suis baser sur le site mit dans le post precedent pour en arriver la.

  7. #7
    Membre du Club Avatar de jcharles
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    MERCI pour vos infos,
    malheureusement rien ne se passe quand je met la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(activecontrol.handle, WM_KEYDOWN, VK_F12, 0);
    alors que quand je met le code ci-dessous l'action F12 se lance bien mais apparement je perd le focus de mon Edit juste à cet instant et le recupére apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Keybd_Event(Key, 0, 1, 0);
      Keybd_Event(Key, 0, 2, 0);
    Pour être plus precis, sur le PC il y a un logiciel (ClickTel) qui par l'action d'une touche paramétrée (F12) recupére les caratéres numeriques de la zone selectionner (en bleu) qui peut être sous n'importe quel logiciel (Word, Excel, Access,etc...), il l'a copie puis lance la numerotation via un autre logiciel.
    Dans mon Appli quand l'utilisateur Click sur le grille je fait plusieurs manip (Mettre à jour une table, modifié la couleur de la zone, recupére le numero de téléphone , verifie s'il est conforme, le copie dans un TEdit puis selectionne tous les chiffres de celui-ci et enfin lance la commande F12 et c'est là que le logiciel ClickTel rentre en action et me dit qu'il faut "selectionner un numero" alors que mes caractéres sont bien selectionnés dans mon TEdit, par contre si j'appuie sur le touche F12 le ClickTel ce lance bien !!!!!!!

    j'espére avoir été assez claire dans mon explication.

    Si vous avez une idée je suis preneur.
    Merci d'avance.

  8. #8
    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 jcharles Voir le message
    alors que quand je met le code ci-dessous l'action F12 se lance bien mais apparement je perd le focus de mon Edit juste à cet instant et le recupére apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Keybd_Event(Key, 0, 1, 0);
      Keybd_Event(Key, 0, 2, 0);
    c'est normalle, soit tu déplace ce code dans le onkey d'un speedbutton soit avant que tu execute ce code fait un: Tedit.setfocus
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #9
    Membre du Club Avatar de jcharles
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    Bonjour Edam,

    je fait déjà un Setfocus, voici ce que je fait dans mon doubleclic de ma grille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     ENum.Text := DBGrid1.Fields[7].Text;
     ENum.SetFocus;
     ENum.SelectAll; 
     //PostMessage(Enum.Handle, WM_KEYDOWN, VK_F12, 0);
     //SendMessage(ENum.handle, WM_KEYDOWN, VK_F12, 0);
     Keybd_Event(VK_F12, 0, 0, 0);
     Keybd_Event(VK_F12, 0, KEYEVENTF_KEYUP, 0);
    j'ai essayé avec le Post ou avec le Send, pour les 2 j'ai essayé avec que le KEYDOWN ou avec le KEYDOWN et KEYUP, rien ne se passe.
    avec le Keybd le logiciel ClickTel la detecte bien mais trouve pas la selection de l'Edit !!!!! je cale.

    je vais chercher vers une autre direction.....quand on appuie sur la touche paramétré par le logiciel ClickTel (exemple : F12), ce logiciel copie en memoire le numero selectionné (Style Ctrl+V), comment puis je copier cette selection en memoire sans utiliser la simulation de touche clavier.

    Merci pour votre aide.

  10. #10
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    C'est peut-être simplement ça qu'il faut faire, le copier dans le presse-papier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       ENum.CopyToClipboard;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  11. #11
    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 jcharles Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     ENum.Text := DBGrid1.Fields[7].Text;
     ENum.SetFocus;
     ENum.SelectAll; 
     application.processemessage; 
    Keybd_Event(VK_F12, 0, 0, 0);
    sleep(10);
     Keybd_Event(VK_F12, 0, KEYEVENTF_KEYUP, 0);
    pas tester
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  12. #12
    Membre du Club Avatar de jcharles
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    MERCI pour votre coup de main,

    Bon pour l'idée du je n'y avais pas pensé....mais non ça ne fonctionne pas.

    et pour le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.processemessage;
    non plus.....

    je continue mes recherches.....

Discussions similaires

  1. Simulation touche clavier
    Par caniff dans le forum Langage
    Réponses: 5
    Dernier message: 26/10/2010, 11h30
  2. Simuler touche clavier PrintScreen
    Par Valarauko dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 25/01/2010, 09h49
  3. Simuler touche clavier
    Par Razor620 dans le forum C++
    Réponses: 2
    Dernier message: 15/04/2009, 13h30
  4. Simuler touche clavier
    Par damien27000 dans le forum Linux
    Réponses: 2
    Dernier message: 24/07/2007, 13h56
  5. Simulation touche clavier
    Par tigana dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 05/05/2006, 12h00

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