Pb avec les Hook !

cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011 - 13 avril 2004 à 00:45
jordangj Messages postés 63 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 8 mai 2007 - 15 sept. 2004 à 21:51
Bon soir a tous,
j'ai besoin d'aide (je maudit les hook j'arrive pas a les faire marcher:(

Enfin j'aimerais faire un hook sur une fenetre externe a mon prog (genre notepad) pour pouvroir rajouter des menu et savoir lorsque l'on click dessu (normal) donc j'ai pondu se code qui marche pas vraiment et je vois vraiment pas pourquoi alors si qq1 a une idee qu'il n'esite pas a me le faire savoir !!!

    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

    Dim ThreadID    As Long
    Dim ProcessId   As Long
    Dim vHwnd       As Long
    
Public Sub IniHook()
    vHwnd = FindWindow("notepad", vbNullString)
    ThreadID = GetWindowThreadProcessId(vHwnd, ProcessId)
        
    hHook = SetWindowsHookEx(WH_GETMESSAGE, AddressOf GetMsgProc, App.hInstance, ThreadID)
End Sub

Public Function GetMsgProc(ByVal nCode As Long, ByVal wParam As Long, lParam As MSG) As Long
   
   Debug.Print lParam.message
   
   GetMsgProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function


alors avec se code des que notepad a le focus il plante !!

Aidee moi svp !!!!!!!!!!!!!!!!!!!!

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 avril 2004 à 01:11
Tu peux stopper tes ambitions HOOKiennes de suite, il faut que le hook se trouve dans une DLL mais VB ne peut pas en produire.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011
13 avril 2004 à 01:14
ah !! bon sa casse toute mes embition snif !
je supose que les dll activeX ne sufise pas .....
si tu pouvais me donner plus de detail du pourquoi et du comment sa serais simpa.

Merci qd meme d'avoir repondu
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 avril 2004 à 01:36
Tu peux aller voir mes sources sur cppfrance, j'en ai fait tout un tas de hooks.
Une dll vb est un composant COM, il faut du code natif avec un point d'entree, c'est la que le systeme appelle la routine de hook quand necessaire.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011
13 avril 2004 à 12:14
oki d'ac, juste une autre petit question, comment sa se fait que l'on puisse faire un hook sur notre propre application avec le meme code !!! et la sa plante pas !
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 avril 2004 à 12:21
c'est interne, pas besoin de dll.
Hook global systeme doit se trouver dans une dll.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011
13 avril 2004 à 22:07
ok merci pr c pressision
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 avril 2004 à 20:53
salut

désolé de vous contredire mais on peut très bien faire un hook global avec VB, tout comme on peut faire une dll normal, mettre de l'asm, faire une appli MS-DOS... il faut trafiquer à la compilation les appels à C2.EXE et LINK.EXE
C2 est le compilateur VB
LINK est le même que celui dans Visual C++ (donc avec les mêmes commandes)

il existe un complément pour VB pour pouvoir changer des choses à la compilation : on peut le trouver à http://johnchamberlain.com/vbcode.html (par John Chamberlain)...

de plus, il faut utiliser l'api CoInitialize pour pouvoir permettre au code de vb d'être utilisé par une autre application non VB. Cette démarche est très bien expliquée dans le livre Advanced Visual Basic de M. Curland

enfin je dirais que ceci est de la programmation VB ultra avancée...

voila

ShareVB
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2004 à 21:06
Je dirais surtout que c'est perdre du temps inutilement.
Quand on veut avancer dans la prog faut bien passer au C un jour ou l'autre, le plus tot etant le mieux.

ciao...
BruNews, Admin CS, MVP Visual C++
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 avril 2004 à 21:48
salut

tout à fait d'accord : rien ne vaut le C. Mais bon, le VB très avancé c'est pas mal non plus : faire des choses que l'on ne peut normalement pas faire et aussi voir le code asm que VB génére...ca vaut quand meme le coup

ShareVB
0
jordangj Messages postés 63 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 8 mai 2007
15 sept. 2004 à 21:51
merci les gas c un bon début
je vai cherché
si il y a d'autre facon...
Merci
GJ
0
Rejoignez-nous