Handle word probléme avec FindWindow

Résolu
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010 - 24 avril 2008 à 09:03
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010 - 28 avril 2008 à 10:03
Bonjour je suis débutant en vb.net et je n'arrive pas à avoir le handle de Word pour effectuer un hook.

Je fais Word_hwnd = FindWindow(vbNullString, "Microsoft Word")

Ce n'est pas le bonne syntaxe ?

merci d'avance :)
A voir également:

42 réponses

cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 14:44
mais c'est indiqué ou ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 14:50
je t'ai filé ce lien ...
http://msdn2.microsoft.com/en-us/library/ms644990.aspx

dans cette page de doc MSDN, on voit par exemple :

WH_MOUSE_LL
Windows NT/2000/XP: Installs a hook procedure that monitors low-level mouse input events. For more information, see the LowLevelMouseProc hook procedure.
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 14:54
Mais ou c'est que tu vois qu'il faut mettre la valeur 14 ?
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 14:54
l anglais et moi ...
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 15:02
"Declared in Winuser.h, include Windows.h"
faut aller voir dans ces fichiers (ou leurs dépendances)

Private Const WH_CALLWNDPROC As Long = 4
Private Const WH_CALLWNDPROCRET As Long = 12
Private Const WH_CBT As Long = 5
Private Const WH_DEBUG As Long = 9
Private Const WH_FOREGROUNDIDLE As Long = 11
Private Const WH_GETMESSAGE As Long = 3
Private Const WH_HARDWARE As Long = 8
Private Const WH_JOURNALPLAYBACK As Long = 1
Private Const WH_JOURNALRECORD As Long = 0
Private Const WH_KEYBOARD As Long = 2
Private Const WH_KEYBOARD_LL As Long = 13
Private Const WH_MOUSE As Long = 7
Private Const WH_MOUSE_LL As Long = 14
Private Const WH_MSGFILTER As Long = -1
Private Const WH_SHELL As Long = 10
Private Const WH_SYSMSGFILTER As Long = 6
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 15:14
d accord merci j avais pas compris.
et comment tu fais aprés pour utiliser SetWindowsHookEx ?
J'y comprend rien !!! :(
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 15:19
En gros mon probléme c'est pourquoi ces 3 lignes
_mouseProc = New CallBack(AddressOf MouseHookProc)
  Word_hwnd = FindWindow("OpusApp", vbNullString)
  _mouseHook = SetWindowsHookExW(WH_MOUSE_LL, _mouseProc, GetModuleHandleW(IntPtr.Zero), 0)

ne marchent pas ?

Enfin si je met juste ca  _mouseHook = SetWindowsHookExW(WH_MOUSE_LL, _mouseProc, GetModuleHandleW(IntPtr.Zero), 0)
ca fonctionne mais juste pour tout l'écran

et si je met ca

  Word_hwnd = FindWindow("OpusApp", vbNullString)

  _mouseHook = SetWindowsHookExW(WH_MOUSE_LL, _mouseProc, Word_hwnd 0)

donc avec le handle de ma page word  , je ne rentre pas dans ma fonction appelée au dessus qui est
_mouseProc = New CallBack(AddressOf MouseHookProc)

Pourquoi je rentre pas dansMouseHookProc ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 15:27
pas de Hook WH_MOUSE_LL local...

The scope of a hook depends on the hook type. Some hooks can be set only with global scope; others can also be set for only a specific thread, as shown in the following table.

Hook Scope
WH_CALLWNDPROC Thread or global
WH_CALLWNDPROCRET Thread or global
WH_CBT Thread or global
WH_DEBUG Thread or global
WH_FOREGROUNDIDLE Thread or global
WH_GETMESSAGE Thread or global
WH_JOURNALPLAYBACK Global only
WH_JOURNALRECORD Global only
WH_KEYBOARD Thread or global
WH_KEYBOARD_LL Global only
WH_MOUSE Thread or global
WH_MOUSE_LL Global only <<<<<<<<<<<<<
WH_MSGFILTER Thread or global
WH_SHELL Thread or global
WH_SYSMSGFILTER Global only
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 15:33
Alors j'ai changé WH_MOUSE_LL en WH_MOUSE et y se passe plus rien :(
C'est normal ?
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 15:36
Parce que apparement WH_MOUSE n'est pas assez bas niveau ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 15:39
a voir si ca peut t'aider :

http://www.cppfrance.com/codes/HOOK-DLL-HOOK-FACILE-POUR-VB6_41774.aspx

utilisable en .Net, pour peu que tu modifies la déclarations des APIs
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
24 avril 2008 à 16:30
Désolé d'insister lol mais je crois que maintenant, le seul probléme que j'ai c'est que _mouseHook = 0

_mouseHook = SetWindowsHookExW(WH_MOUSE, _mouseProc, GetModuleHandleW(Word_hwnd), GetCurrentThreadId())

Vous en pensez quoi ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 16:43
Return Value
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

sinon, j'en pense que tu fais tout et n'importe quoi...

lis cette fichue doc !

ici, tu ne pourras hooker qu'un thread créé par ton process. Pour faire un hook d'un thread créé par un autre process, il te faut utiliser une dll....

"If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a DLL."
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 16:44
en résumé: si tu souhaite espionner le thread qui gère la fenêtre Word dont tu as toruvé le Handle, il te faut une dll.
en effet, le code a besoin d'etre injecté dans le process Word, et ca n'est possible (facilement) qu'avec une dll...
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
25 avril 2008 à 11:19
Salut

maintenant j'ai un autre problème
Mon hook marche :) et oui lol mais y marche que sur mon appli en fait
Donc je pense qu'il faut que je récupère l'id de Word en cours mais ca j'ai pas réussi :S
T'aurais pas une idée ?

Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 11:22
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Integer, ByRef lpdwProcessId As Integer) As Integer
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
25 avril 2008 à 11:27
Quand je passe sur cette ligne en debuggeur

 _mouseHook = SetWindowsHookExW(WH_MOUSE, _mouseProc, GetModuleHandleW(IntPtr.Zero), GetWindowThreadProcessId(Word_hwnd, GetCurrentThreadId))

ca me la prend pas en compte

pourquoi ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 11:30
au risque de me répeter ; lis la doc !
http://msdn2.microsoft.com/en-us/library/ms633522.aspx
Microsoft documente tout...
0
cs_sylvain230 Messages postés 67 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 5 juillet 2010
25 avril 2008 à 11:42
J'ai récupéré l'id de word et quand je passe la souris sur la fenêtre word ca me dit
Windows word a rencontré un probléme et doit être fermé ...
Je vois pas de quoi ca peut venir ...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 11:54
il n'aime peut etre pas l'injection de code...
0
Rejoignez-nous