Salut tous le monde,
Je suis en train de me prendre la tête sur le WebBrowser ...
J'aimerais prendre pocéssion des cliques souris : gauche, milieu et droit.
Le gauche, simplement pour lancer un event, le droit et le milieu pour leurs personnaliser le traitement.
Test 1 : Surcharge de WnProc : Pas d'événements souris
Test 2 : Interface (je sais plus le nom) pour intercépter les messages, à la WnProc : Idem, pas dévénements souris
Test 3 : Je me sers des événements Document (que je place après le DocumentComplete) et qui possède un Click... infos souris vides et pas beaucoup de libertés
Résolution... Hook, voila donc :
protected static int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
User32.MOUSEHOOKSTRUCT mouseParams = (User32.MOUSEHOOKSTRUCT)
Marshal.PtrToStructure(lParam, typeof(User32.MOUSEHOOKSTRUCT));
Control activeControl = Control.FromChildHandle(mouseParams.hwnd);
User32.MouseEvent intParam = (User32.MouseEvent)wParam.ToInt32();
if (nCode > 0 && intParam != User32.MouseEvent.WM_MOUSEMOUVE && activeControl != null &&
activeControl.GetType() == typeof(AdvancedWebBrowser))
{
if (intParam == User32.MouseEvent.WM_MBUTTONUP)
{
((AdvancedWebBrowser)activeControl).MouseHookEvent(mouseParams, MouseHookButton.Middle);
return 1;
}
if (intParam == User32.MouseEvent.WM_RBUTTONUP)
{
((AdvancedWebBrowser)activeControl).MouseHookEvent(mouseParams, MouseHookButton.Right);
return 1;
}
}
returnUser32.CallNextHookEx(_currentHook, nCode, wParam, lParam);
}
Ici, je traite le bouton droit et le bouton du milieu.
Mon problème est le suivant :
Quand je souhaite utiliser ma méthode pour le bouton gauche(pour lancer un event), je ne retourne pas 1 pour ne pas intérrompre le cycle.... mais problème, ca plante : L'application fige, la souris aussi, pas d'erreur et le clique souris n'est jamais pris en compte (pour défiger, il me suffit de lui faire perdre le focus).
J'ai essayé en Asynchrone, ca ne marche pas mieux.
Soit je fais n'importe quoi, soit y a juste un ptit truc à changer...
Je préférais quand meme passer par autre chose que le hook pour résoudre mon pb.
I love .net