HOOK FENETRE

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 26 févr. 2004 à 22:16
bonapart002 Messages postés 45 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 9 février 2011 - 16 mars 2009 à 20:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20786-hook-fenetre

bonapart002 Messages postés 45 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 9 février 2011
16 mars 2009 à 20:30
merci te ton explication BruNews.
tu peut me détailler ,par un simple exemple , comment utiliser GetModuleFilename puis poster un message à WM_DESTROY ?
et je remerci bcp .
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 mars 2009 à 20:01
PAS DE MessageBox dans un hook !!!
Ecris dans un fichier et tu liras ensuite.

Si c'est juste pour empecher un processus GUI de demarrer, teste sur le nom du processus (nom exe par GetModuleFilename) et si correspond, tu PostMessage un WM_DESTROY.
bonapart002 Messages postés 45 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 9 février 2011
16 mars 2009 à 19:27
merci c'est un très bon exemple .
ça marche bien avec HCBT_MINMAX et HCBT_MOVESIZE ....
mais dans le cas de HCBT_CREATEWND il m'affiche plusieurs MessageBox sans s'arrêter(car a chaque création d'un fenêtre de MessageBox il affiche un autre fenêtre MessageBox :boucle infine)
-mon problème :récupérer le nom de la fenêtre qui sera crée et tester sur se nom .
par exemple si la fenêtre qui sera crée ayant comme nom "mafenetre" j'affiche un MessageBox et dans les autre cas ne rien faire .

je récupère le nom de la fenêtre comme ça
-------------------------
if(nCode==HCBT_CREATEWND)
{
CHAR szName[12];
GetWindowText((HWND)wParam,szName,12);
if(StrCmp(szName,"mafenetre"))
{
MessageBox(0,"mafenetre ","mafenetre ",0);

}
else
{// rien a faire }
}
------------------------
mais il ne peut pas récupérer le nom de la fenêtre avant sa création pour tester sur lui.

svp tu peut m'aider ?et je vous remerci bcp.
mrbrice Messages postés 5 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 1 septembre 2008
24 sept. 2007 à 14:04
Ton code est très bien, et très compréhensible...
Mais j'ai des plusieurs soucis :

- Je souhaite récupéré l'évènement "Fenêtre active". Je décommente la partie de code prévue à cet effet, mais le souci, c'est que lorsque ladite fenêtre est activée, je me prends 36 messageBox pour une seule activation. Comment çà se fait? (pour info, j'ai modifié ton prog pour ne récupérer les messages que d'une seule fenêtre en particulier)

- De plus, j'aimerais que mon appli qui utilise ta dll soit capable de récupérer l'évènement. Et je n'arrive pas à communiquer entre la proc de ta dll qui récupère le message et mon prog.
Aurais tu une idée?

- Enfin, une question : est on obligé de faire une dll pour faire du hook? As tu des liens sur des manuels d'utilisation du hook en C++.

Voilà, c'est tout.
Merci d'avance
TuXAveRy Messages postés 14 Date d'inscription samedi 19 mai 2001 Statut Membre Dernière intervention 4 décembre 2004
27 juil. 2004 à 19:10
génial, merci :)
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
29 févr. 2004 à 13:17
ouais je suis d'accord avec toi, mais bon c'était surtout pour donner un exemple et je savais pas trop quoi mettre !!! désoler si je donne des mauvais habitude !!!
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
29 févr. 2004 à 10:23
C joli!!!

Par contre pour auant que je sache il faut très rapidement rendre la main dans les hooks. Or MessageBox bloque toute. Je ne sais pas si c'est vraiment génant mais ça serait surement mieux si tu faisais un log plutot qu'un messagebox
Rejoignez-nous