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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 14
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 14
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 14
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
Rejoignez-nous