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

Windows Forms Discussion :

[c#][debutant] hook local, detecter evenements souris


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut [c#][debutant] hook local, detecter evenements souris
    Bonjour,
    j'ai une form avec un composant webbrowser et je voudrais pouvoir
    connaitre les coordonnées de la souris + tous les evenements souris dans cette form. J'ai voulu faire ca en installant un hook comme dans le tutorial du msdn, mais seulement je ne vois pas comment intercepter ces evenements...Et si quelqu'un a une autre idée (sans passer par un hook) je suis preneur. Merci !!
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    1. Déjà ta Form doit être abonnée à tous les evenements de la souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Dans InitializeComponent
    this.MouseDown += new MouseEventHandler(this.F_MouseDown);
    this.MouseEnter += new EventHandler(this.F_MouseEnter);  
    this.MouseHover += new EventHandler(this.F_MouseHover);  
    this.MouseLeave += new EventHandler(this.F_MouseLeave);  
    this.MouseMove += new MouseEventHandler(this.F_MouseMove);  
    this.MouseUp += new MouseEventHandler(this.MouseUp);  
    this.MouseWheel += new MouseEventHandler(this.MouseWheel);
    2. Maintenant, pour recuperer les evenements de la souris quelquesoit l'endroit concerné sur la Form (donc y compris les Control)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Par exemple dans le constructeur après InitializeComponent
    foreach(Control c in this.Controls)
     {
       c.MouseDown += new MouseEventHandler(this.F_MouseDown);
       c.MouseEnter += new EventHandler(this.F_MouseEnter);  
       c.MouseHover += new EventHandler(this.F_MouseHover);  
       c.MouseLeave += new EventHandler(this.F_MouseLeave);  
       c.MouseMove += new MouseEventHandler(this.F_MouseMove);  
       c.MouseUp += new MouseEventHandler(this.MouseUp);  
       c.MouseWheel += new MouseEventHandler(this.MouseWheel);
     }
    3. Et enfin dans chacune des méthodes correspondant aux evenements souris il faudra penser à identifier le sender en le transtypant en Control par exemple pour recupérer le .Name ou tout autre manière qui te conviendra
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //
    private void F_MouseDown(Object sender, MouseEventArgs e)
    {
        switch(((Control) sender).Name)
        // ... etc
    }
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    ah ok trés bien ! merci !
    Par contre tu n'aurai pas une idée sur la gestion des evenements comme MouseDown avec la methode des hooks ? Parceque en fait j'aimerai bien désactiver le click droit de la souris, ou peut y a t-il une solution plus facile.
    Ps: peut-etre que je fais de mauvaises recherches mais sur le msdn , à part le tutorial (bien ecrit) sur le hook qui permet de recuperer les coordonnées souris, il n'y a pas grd chose sur le sujet ...

    edit: c'est drole le transtypage, c'est propre au c#? en java je crois pas avoir vu ca , dans ce cas precis quel transtypage on a le droit de faire ?

    edit2:c'est une erreur MouseUp au lieu de F_MouseUp ?(j'ai essayé de corriger mais ca dit que l'evenement est incompatible avec l'activX... :-/)
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  4. #4
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    arg, ca marche sur tout , sauf sur l'axwebb ... help me neguib plz :'(
    edit: pour revenir au hook, je crois avoir trouver: http://www.codeproject.com/csharp/NetWin32Hooks.asp
    je verrai ca demain
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  5. #5
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    c'est bon j'ai trouvé,c'est simple, en partant toujours du tutorial du msdn,
    en fait c'est la procedure mouseproc qui donne l'identifiant des derniers messages envoyés par la souris, à savoir wParam.
    Maintenant reste plus qu'à intercepter le message du click droit et de l'enlever de la queue des messages :-/
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    Parceque en fait j'aimerai bien désactiver le click droit de la souris, ou peut y a t-il une solution plus facile.
    En .NET 2.0, le composant WebBrowser expose la propriété IsContextMenuEnabled qu'il suffit de définir à "false"...

    Maintenant, pourquoi est-ce que tu veux désactiver le clic droit ? S'il s'agit de supprimer certaines fonctionalités accessibles par le menu contextuel par défaut, pense également que les raccourcis claviers sont également activés par défaut : par exemple, si ton WebBrowser est ouvert sur un document office, CTRL-S permet d'effectuer une sauvegarde.
    Donc pour désactiver toutes ces fonctionnalités, il faudra également intercepter les raccourcis clavier correspondant...

  7. #7
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    oh merci trés bien !!
    en fait c'etait juste pour desactiver le menu de parametrage de flash quand tu clickdroit sur un objet flash . Donc c good merci !!
    edit: c bizarre j'ai pas iscontextmenu enabled dans les champs de propriétés du axwebbrowser , j'suis nouveau au csharp et surtout à vs.net tu peux m'aider ? merci

    edit: ca serait pas dans le framework 2.0 par hasard ?
    http://msdn2.microsoft.com/en-us/lib...nuenabled.aspx
    "L'imagination est plus importante que la connaissance." - Albert Einstein.

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

Discussions similaires

  1. evenement souris java (debutant)
    Par Flouf dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 05/04/2007, 11h33
  2. [Debutant] Menu sur clic de souris
    Par chabannou dans le forum Windows
    Réponses: 8
    Dernier message: 02/04/2005, 01h52
  3. [JFrame] [MouseListener] recupérer evenement souris
    Par kikoufr dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 19/08/2004, 18h45
  4. Gestion evenement souris
    Par Bugmaster dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 30/07/2004, 08h40
  5. Evenement Souris
    Par Sirotilc dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/01/2003, 20h29

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