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

C# Discussion :

MdiForm and MouseMove event


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut MdiForm and MouseMove event
    Salut à tous,

    j'essaie de faire level un evenement mousemove dans un logiciel que j'ai.

    L'idée derrière tout ça est de remettre à zéro un timer à chaque fois que l'on bouge la souris (ou que l'on tappe une touche, mais commençons par la souris) et ce, peu importe quel form est loader dans cet application.

    La form de base est de type MDI, et il semble que ces événements (mousemove) ne sont pas fonctionnels....

    Avez-vous une idée pourquoi?....


    voici le code que j'utilise...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    this.MouseMove +=newSystem.Windows.Forms.MouseEventHandler(mdiGestion_MouseMove);
     
     
    privatevoid mdiGestion_MouseMove(object sender, MouseEventArgs e)
    {
    MessageBox.Show("test");
    }
    

    Merci,

    Fade Out

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    bon,

    j'ai fait quelques recherche, et il semble que les MDI parent form ne sont pas supposé de lever les événement mousemove (et autres mouse)

    Donc, je cherche un tweak around....

    L'idée de tout ça, est de faire un logoff à l'usager, si il n'y a pas d'activité pendant X temps....

    Peut etre intercepté la souris au niveau de windows, et de la vérifier à l'aide d'un timer à tout les minutes???

    qq à une idée comment faire ça?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Voilà,

    avec un peu de tweaking, j'ai réussis à trouvé la solution à mon problème. Il faut utiliser la library user32.dll et faire quelques petites manipulation....

    1) Ajouter le code suivant pour la

    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
    using System;
    using System.Runtime.InteropServices;
    using System.Windows;
    using System.Windows.Media;
    namespace Gestion
    {
    publicstaticclassMouseUtilities
    {
    publicstaticPoint AbsoluteCurPosition()
    {
    Point w32Mouse = newPoint();
    GetCursorPos(ref w32Mouse);
    return (newPoint(w32Mouse.X, w32Mouse.Y));
    }
    [StructLayout(LayoutKind.Sequential)]
    internalstructWin32Point
    {
    publicInt32 X;
    publicInt32 Y;
    };
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    internalstaticexternbool GetCursorPos(refPoint pt);
    }
    }
    
    2) Ajouter un timer qui vérifie la position à tous les x milliseconde. Pour ma part je vérifie plusieurs fois au cas où par malchance j'arrive exactement au même point (1 chance sur 1 million à peu près). Voici le code dans le timer event.

    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
    System.Windows.Point tempPoint;
    tempPoint = MouseUtilities.AbsoluteCurPosition();
    if (lastMousePos == tempPoint)
    {
    if (counter < countLogoff)
    {
    counter++;
    }
    else
    {
    logout();
    logoutTimer.Stop();
    }
    }
    else
    lastMousePos = tempPoint;
    
    en espérant le tout utilie. Aussi, si qqun peut me dire si ya qqchoses qui cloche

    À la prochaine
    FadeOu

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

Discussions similaires

  1. Accordions and activate event
    Par Invité dans le forum jQuery
    Réponses: 1
    Dernier message: 20/06/2013, 17h18
  2. [Dojo] Comment utiliser les events du drag and drop de dojo
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/07/2012, 23h55
  3. Personal.xls and events
    Par baaaptiste dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2010, 17h24

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