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

Langage Delphi Discussion :

Simuler un clavier et envoyer des touches à une autre Form?


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Simuler un clavier et envoyer des touches à une autre Form?
    Salut à tous, je suis actuellement au développement d'un clavier tactile qui sera utilié avec des écrans 'touch screen'.

    De la manière que je l'ai programmé, c'est que le clavier 'flotte' always on top au dessus de mon application et chaque bouton sur me form clavier est une touche comme sur un vrai clavier. Quand j'appuis sur une touche j'aimerais envoyer la touche pressée à la form en-dessous qui a le focus pour simuler un vrai clavier.

    J'ai quelque problèmes avec mes messages wnidows. Si j'ai le handle du composant c'est facile de lui poster les messages au fur et à mesure, mais j'aimerais pourvoir naviguer dans l'application avec le clavier virtuel (En appuyant sur TAB). Il me faut dont un moyen de monitorer les changements de focus qui se produisent sous la FORM clavier pour toujours avoir le bon handle à poster les messages.

    quelqu'un a une solution, un bout de code?

    Gros merci à toute réponse.

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Bonjour urusei, et bienvenue sur les forums Developpez.com.

    Si j'ai bien compris ton besoin tu veux qu'a chaque changement de focus, tu récupères le Handle du composant qui vient de prendre le focus. Pour ça, cette procédure devrait t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        procedure CMFocusChanged(var Message:TCMFocusChanged);Message CM_FocusChanged;
    En sachant que tu récupères l'objet qui vient de récupérer par le code

    Bon codage !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Prmio, gros merci d'avoir prit le temps de me répondre.

    C'est presque ca, mais pas tout à fait.

    Ce code ne monitore que la Form qui a le focus et détecte ses changement de focus.

    Ce qu'il me faut c'est un moyen de monitorer toute l'application pour les changements de focus, toutes les Forms non modales qui sont ouvertes, quand un focus change dans l'une ou l'autre et de capter le message.

    Mais j'avoue avoir quelques problèemes. J'ai essayé plusieurs méthodes: Application.OnMessage semble être la meilleur place pour intercepter tout ce qui se passe dans l'application, mais il faut trouver le BON message a intercepter. Et surtout aller chercher les params du message pour récupérer le control.

    A+ et merci

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    si je ne fait pas ereur il te siffi peut etre simplement de donner a ton clavier le handle de l'application que tu veut "piloter" et non pas le handle du composant exact, quand ton clavier envera une frappe de touche virtuel a ton aplication elle se chargera d'elle meme de transferet au composant actif comme elle le fait avec un vrai clavier.
    Je suis egalement a la recherche de se genre d'info g developper un petit prog qui envoie des ordres a une application (que je n'est pas propgrammer) mon probleme et que pour lui transmettre des ordre elle doit se trouver au premiere plan
    J'utilise keybd_event pour lui transmettre des frappes de touches, j'ai essayer avec sendmessage mais sans succé pour l'instant
    Voila j'espere que mon message d'aidera
    ++

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Ne t'embete pas avec la gestion interne des messages, tu te complique la vie pour rien.
    Trouve l'application qui à la focus et envoie lui simplement le code de la touche correspondante en utilisant le message WM_KEYDOWN et WM_KEYUP avec postMessage() ou sendMessage(), la gestion du focus se fera en interne.
    Ce lien te fournira quelques infos interessantes.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

Discussions similaires

  1. Envoyer des paramètres à une url
    Par joKED dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/03/2007, 12h22
  2. Réponses: 3
    Dernier message: 19/09/2006, 15h36
  3. Réponses: 18
    Dernier message: 03/03/2006, 18h19
  4. forcer une touche du clavier à prendre la valeur d'une autre
    Par agderf dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/01/2006, 16h08

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