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 :

Détecter un clic de souris


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut Détecter un clic de souris
    Bonjour,

    Je souhaite que mon application soit capable de détecter lorsque l'utilisateur clique le bouton central de la souris, et cela même quand un autre programme est au premier plan.

    Certains pilotes de souris permettaient d'associer un évènement, par exemple Lancer un Explorateur quand le bouton central est enfoncé depuis n'importe quelle application. C'est exactement ceci que je cherche à reproduire, une sorte de RegisterHotKey mais pour la souris.

    Quelqu'un a une idée ?

    Merci,
    Illioc

  2. #2
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Bienvenue sur developpez.com !

    Pour les prochaines fois : merci de ne pas omettre de consulter cette page avant de créer un nouveau thread :
    http://www.developpez.net/forums/showthread.php?t=9157

    Pour faire avancer le schmimilbilibilibic :
    http://www.developpez.com/delphi/faq...s#testertouche

    Bon dev'

  3. #3
    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
    J'utilise ce principe dans ma démo :
    http://sub0.developpez.com/delphi/mouse.zip

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    Bonsoir,

    Merci pour vos réponses rapides, mais je souhaiterais plutôt utiliser une méthode avec notification, car utiliser mon Timer pour interroger Windows régulièrement me paraît un peu gourmand.

    Je pensais en fait à un message Windows de type "WM_" à récupérer dans ma procédure "WndProc", j'ai bien trouvé "WM_MBUTTONDOWN" (http://msdn.microsoft.com/library/de...buttondown.asp) mais il ne concerne que la fenêtre active et ne semble pas être envoyé en mode broadcast à toutes les applications.

    Je vais chercher encore un peu sur MSDN sinon je ré-évaluerai l'idée du Timer.

    Merci,
    Illioc

  5. #5
    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
    Dans ce cas, tu ne pourras pas récupérer les messages des autres fenêtres, il faudra obligatoirement que ta form soit au premier plan et active pour que la détection fonctionne. Sinon, il faut développer un hook souris.

    Il faut aussi savoir que les hooks ne sont pas appreciés par les anti-virus...

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Par défaut
    J'ai déja développé une application qui détectait les clicks souris ET les touches numériques e, utilisant les timers et je ne trouve pas çela gourmand

  7. #7
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Oui, il faut créer une fonction de Hook, et utiliser la fonction de l'API Windows SetWindowsHookEx

    ça permet de demander gentiment à windows de prévenir quand un message souris à lieu, sans avoir à scanner la file des messages périodiquement avec un timer.
    C'est un peu plus "light" pour le système

  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
    ZiKO : Je vais récupérer une souris de ce genre pour faire des essais. Je te tiens au courant.

    Waskol : Tu as raison. Les hooks sont plus appropriés pour effectuer ce genre de redirection. Un petit bémol cependant à propos des anti-virus qui considèrent qu'un hook est potentiellement dangereux pour le bon fonctionnement du système... La méthode du timer est moins performante, certes, mais reste assez efficace. Elle est surtout plus facile à coder...

    Mais pour l'instant, on ne compte pas scanner tous les messages, on est juste en train de chercher quels messages correspondent à ces boutons.

    à+

  9. #9
    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
    Ma souris me retourne ce message : WM_XBUTTONDOWN

    http://msdn.microsoft.com/library/de...buttondown.asp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const
      WM_XBUTTONDOWN = 524;  // $20C
      WM_XBUTTONUP   = 523;  // $20B
    [Edit]
    http://www.vbaccelerator.com/home/vb...ks/article.asp

  10. #10
    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
    Voici une démo qui fonctionne chez moi. Lorsqu'on clique sur ces boutons cela change la couleur des panels, mais uniquement si le pointeur de la souris est positionné sur la fenêtre du programme. Il va donc falloir soit utiliser un hook, soit dans un timer avec la fonction GetMessage... Cela devrait fonctionner. Pour le moment, j'attend de savoir si ce sont biens les boutons que tu cherchais à détecter...

    http://sub0.developpez.com/delphi/xbutton.zip

  11. #11
    Invité
    Invité(e)
    Par défaut
    Si si, thanks! Ce qu'il me fallait Maintenant reste plus qu'a faire le code pour envoyer l'appuis sur les touches 1, 2 et 3 du clavier =)

    Ben je prefere ce timer pour la facilité de coder, car moi et les hooks, nous ne sommes pas des amis

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/01/2014, 09h25
  2. Détecter clic de souris hors form
    Par MrThorr dans le forum VB.NET
    Réponses: 20
    Dernier message: 01/03/2009, 19h28
  3. Réponses: 1
    Dernier message: 14/08/2008, 22h43
  4. Détecter le clic d'une souris sur un webbrowser
    Par sroz dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/10/2005, 08h33
  5. Réponses: 8
    Dernier message: 14/03/2005, 21h43

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