Bonjour,
Je voudrais écrire un petit programme Java qui permet de recevoir les évènements lock/unlock d'une session windows.
Tout d'abord je crée une fenêtre windows :
Après, je récupère un objet HWND depuis cette fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Canvas win = new Canvas(); Window window = new Window(null); window.add(win); window.setVisible(true); win.setVisible(true);
Pour s'enregistrer au prés du système afin de recevoir les évènnements j'utilise l'API Windows Wts32Api.dll et ça méthode WTSRegisterSessionNotification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 HWND hwnd = new HWND(); hwnd.setPointer(Native.getComponentPointer(win));
Enfin, j'appel la fonction GetMessage comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DWORD flag = new DWORD(0); // j'ai même essayer avec la valeur 1 "NOTIFY_FOR_ALL_SESSION" Wts32Api lib = Wts32Api.INSTANCE; boolean response = lib.WTSRegisterSessionNotification(hwnd, flag);
Le problème que la méthode GetMessage reçoit pas les événements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 User32 user32 = MyUser32.INSTANCE; MSG msg = new MSG(); while (user32.GetMessage(msg, hwnd, 0, 0) != 0) { //user32.TranslateMessage(msg); //user32.DispatchMessage(msg); System.out.println("got a message"); }
A mon avis les méthode WTSRegisterSessionNotification et GetMessage ne sont pas exécuter dans le même process/thread, d'où GetMessage ne reçoivent pas les événements
Des suggestions![]()
Merci pour vos réponses.
Partager