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

API, COM et SDKs Delphi Discussion :

Control du clavier


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut Control du clavier
    Salut à tous,

    Je développe une petite loupe qui m'aide régulièrement dans mes tâche sur le pc (je suis mal voyant). Le petit truc qui me manque, c'est le control du clavier hors de l'application. Je voudrais par exemple en appuyant sur "ctrl" et "+" que le grossisemnt soit plus important.
    Si quelqu'un peu m'aiguiller ou m'expliquer brièvement comment faire, ce serait sympa.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Par défaut
    utilise ton événement onkeypress de ta form et pour la form keypreview doit être à true.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    J'ai déjà essayé, mais ca ne fonctionne pas, car je suis dans une tout autre application qui n'a rien avoir avec celle ci.

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Il faut utiliser cette méthode je crois :
    http://nono40.developpez.com/sources/source0007/

    à+

  5. #5
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    813
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 813
    Par défaut
    salut ,

    tu peux aussi regarder a cette adresse qui a des exemples de hooks.

    http://phidels.com/php/index.php3?page=moteurrecherche.inc.php3

  6. #6
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    On a un article sur le hook clavier :
    http://tcharles.developpez.com/simul/?delphi=1

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Si tu veux juste connaitre l'état des touches Shift, Control, Alt du clavier, utilises la fonction KeyboardStateToShiftState (de System.pas je crois)

    Il me semble qu'elle est overload et ne nécessite pas obligatoirement de paramètre TKeyState. SInon, il suffit d'appeler la procedure GetKeyboardState() pour l'obtenir.

  8. #8
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par Sub0
    Si tu veux pouvoir appuyer sur plusieurs touches en simultanné, il faut enregistrer l'état de chaque touche dans un boolean.
    Perso, j'utilise la méthode suivante pour obtenir l'état des touches du clavier du système :
    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
    Unit Unit1;
    Interface
    Uses Windows, SysUtils, Classes, Graphics, Controls,
         Forms, ExtCtrls, StdCtrls;
     
    Type
      TForm1 = Class(TForm)
        Timer1: TTimer;
        Procedure Timer1Timer(Sender: TObject);
      End;
     
    Var
      Form1: TForm1;
     
     
    {----------------------------------------------------------------}
    {                       }Implementation{                         }
    {----------------------------------------------------------------}
    {$R *.DFM}
     
    Var
      Pos: TPoint;
      Etatkb: Array[1..255] Of Boolean;
     
     
    {----------------------------------------------------------------}
    Procedure TForm1.Timer1Timer(Sender: TObject);
    Var
      x: Integer;
    Begin
     
      Timer1.Interval := 1;
     
      For x := Low(Etatkb) To High(Etatkb) Do
        If ((GetAsyncKeyState(x) And 32768) <> 0) Then Etatkb[x] := True
        Else If ((GetAsyncKeyState(x) And 32768) = 0) Then Etatkb[x] := False;
      Pos := Mouse.CursorPos;
     
      { Exemple 1 : Déplacement du curseur avec les touches de directions }
      If (Etatkb[VK_LEFT]) Then Dec(Pos.x, 2);
      If (Etatkb[VK_RIGHT]) Then Inc(Pos.x, 2);
      If (Etatkb[VK_UP]) Then Dec(Pos.y, 2);
      If (Etatkb[VK_DOWN]) Then Inc(Pos.y, 2);
      If (Etatkb[VK_LEFT]) Or (Etatkb[VK_RIGHT]) Or 
         (Etatkb[VK_UP]) Or (Etatkb[VK_DOWN]) Then SetCursorPos(Pos.x, Pos.y);
     
      { Exemple 2 : Touche Echap pour quitter le programme }
      If (Etatkb[VK_ESCAPE]) Then Close;
     
    End;
     
     
    {----------------------------------------------------------------}
    End.
    Je pense qu'il faudra peut-être complèter le code avec KeyboardStateToShiftState pour détecter les touches de controle...

    http://sub0.developpez.com/delphi/VK.txt

    Jette aussi un oeil sur les sources des messages suivants :

    http://www.developpez.net/forums/vie...318294#2318294
    http://www.developpez.net/forums/viewtopic.php?t=231681

    à+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 35
    Par défaut
    Merci beaucoup pour votre aide

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

Discussions similaires

  1. client-server controler le clavier et la souris
    Par Manzarek dans le forum VB.NET
    Réponses: 0
    Dernier message: 28/12/2009, 11h13
  2. Controle Saisie clavier : entier
    Par nicodn02 dans le forum C
    Réponses: 4
    Dernier message: 21/01/2009, 15h37
  3. controle de la souris et du clavier par software
    Par jacko381 dans le forum Windows
    Réponses: 6
    Dernier message: 10/09/2008, 20h46
  4. Controle au clavier
    Par innosang dans le forum C++
    Réponses: 9
    Dernier message: 22/10/2007, 21h24
  5. Controle du clavier
    Par madislak dans le forum Général Java
    Réponses: 9
    Dernier message: 14/02/2006, 15h49

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