Hook fenetre

Soyez le premier à donner votre avis sur cette source.

Vue 9 615 fois - Téléchargée 1 238 fois

Description

voila, c'est un exemple de hook sur la création de fenêtre (et sur les fenetres en général) !!!
comme il n'y en avait pas sur le site (enfin j'en ai pas trouver), bah je me suis dit que ça serait bien d'en mettre un !!!

le ziip contient la DLL necessaire pour le programme, contenant le hook et un programme utilisant la DLL...

Source / Exemple :


tout est dans le zip

Conclusion :


sinon, regarder seulement le code de la DLL (que j'ai essayer de commenter certaine partit pour faire une sorte de tutorial !!! un programme d'exemple est fournit, il se sert bien évidement de la DLL, le programme vous avertit lorsqu'une fenêtre va etre réduite ou agrandit...

voila en espèrant que cela aidera des personnes !!!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

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 .
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
18
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.
Messages postés
45
Date d'inscription
mercredi 17 décembre 2008
Statut
Membre
Dernière intervention
9 février 2011

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.
Messages postés
5
Date d'inscription
lundi 7 août 2006
Statut
Membre
Dernière intervention
1 septembre 2008

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
Messages postés
14
Date d'inscription
samedi 19 mai 2001
Statut
Membre
Dernière intervention
4 décembre 2004

génial, merci :)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.