BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
26 févr. 2004 à 22:16
bonapart002
Messages postés45Date d'inscriptionmercredi 17 décembre 2008StatutMembreDerniè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.
bonapart002
Messages postés45Date d'inscriptionmercredi 17 décembre 2008StatutMembreDerniè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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és45Date d'inscriptionmercredi 17 décembre 2008StatutMembreDerniè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és5Date d'inscriptionlundi 7 août 2006StatutMembreDerniè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és14Date d'inscriptionsamedi 19 mai 2001StatutMembreDernière intervention 4 décembre 2004 27 juil. 2004 à 19:10
génial, merci :)
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 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és583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 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
16 mars 2009 à 20:30
tu peut me détailler ,par un simple exemple , comment utiliser GetModuleFilename puis poster un message à WM_DESTROY ?
et je remerci bcp .
16 mars 2009 à 20:01
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.
16 mars 2009 à 19:27
ç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.
24 sept. 2007 à 14:04
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
27 juil. 2004 à 19:10
29 févr. 2004 à 13:17
29 févr. 2004 à 10:23
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