Hook WH_MOUSE_LL

vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
- 8 avril 2007 à 14:24
cs_Barrack
Messages postés
1
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
16 avril 2007
- 16 avril 2007 à 14:54
Bonjour,

J'utilise un hook bas niveau de type WH_MOUSE_LL, et j'ai un problème lorque je cherche a fermer ma fenêtre principale (la souris se bloque). Le petit programme qui suit met en évidence ce problème.
Une idée? Merci

#define _WIN32_WINNT 0x0501

#define _WIN32_IE 0x0501

#include<windows.h>

#include<tchar.h>

 

HINSTANCE hinst;

HWND hmain;

TCHAR szappname[] = _T("ACHANGER");

HHOOK hHook;

 

 

LRESULT CALLBACK AppWndProc(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM
lParam)

{

  switch(mssg)
{

    case
WM_DESTROY:

      PostQuitMessage(0);

      return
0;

  }

  return
DefWindowProc(hwnd, mssg, wParam, lParam);

}

 

DWORD __stdcall InitInstance()

{

  WNDCLASSEX     wndcls;

  memset(&wndcls, 0, sizeof(WNDCLASSEX));

  wndcls.cbSize = sizeof(WNDCLASSEX);

  wndcls.lpfnWndProc   = AppWndProc;

  wndcls.style         = CS_HREDRAW | CS_VREDRAW;

  wndcls.hInstance     = hinst;

  wndcls.lpszClassName =
szappname;

  wndcls.hbrBackground = (HBRUSH)
GetStockObject(WHITE_BRUSH);

  wndcls.hCursor       = LoadCursor(0, IDC_ARROW);

  if(!RegisterClassEx(&wndcls))
return 0;

  hmain = CreateWindowEx(0,
szappname, szappname, WS_OVERLAPPED | WS_VISIBLE | WS_SYSMENU,

    CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,

    0, 0, hinst, 0);

  return
(hmain != 0);

}

 

LRESULT CALLBACK MouseProc(int nCode,
WPARAM wParam, LPARAM lParam)

{

  return
CallNextHookEx(hHook, nCode, wParam, lParam);

}

 

int WINAPI WinMain(HINSTANCE
hInstance, HINSTANCE x, PSTR y, int z)

{

  MSG msg;

  hinst = hInstance;

  hHook =
SetWindowsHookEx(WH_MOUSE_LL, MouseProc, hInstance, NULL);

  if(!InitInstance())
return 0;

  ShowWindow(hmain, SW_NORMAL);

  while(GetMessage(&msg,
NULL, 0, 0)) {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  return 0;

}

_____________________________________
Un éditeur de ressources gratuit pour Windows

9 réponses

racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
8 avril 2007 à 14:35
Salut,
Je viens de tester ton code. Aucun problème. La fenêtre se ferme normalement.
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
8 avril 2007 à 14:58
Je confirme le bloquage chez moi, c'est bizarre

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
8 avril 2007 à 17:30
Chez moi aussi ça marche (XP SP2)
au passage, Microsoft recommande de pas faire while(GetMessage(&msg, NULL, 0, 0)) à cause des éventuelles erreurs (retourne -1), mais bon...
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
8 avril 2007 à 19:18
Je viens de remarquer que quand le thème Windows XP est désactivé je ne rencontre pas le problème.

_____________________________________
Un éditeur de ressources gratuit pour Windows
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
8 avril 2007 à 20:12
Chez moi ça marche avec les thèmes  Windows XP et Windows classique.
0
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
8 avril 2007 à 20:51
Tu ne supprime pas le hook avec UnhookWindowsHookEx ?

C++ (@++)<!--
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
8 avril 2007 à 21:09
Non, mais de toutes facons le blocage intervient avant que je ne ferme la fenêtre (c'est quand j'appuie sur le bouton de la souris que ca se bloque, pas quand je le relache)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
8 avril 2007 à 21:19
Bizarre, car ça fonctionne aussi très bien pour moi.

C++ (@++)<!--
0
cs_Barrack
Messages postés
1
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
16 avril 2007

16 avril 2007 à 14:54
Au passage, tu as oublié de faire un Unhook à la fin de ton programme... Je sais pas si ca vient de là ou pas...

Woods
0