begin process at 2012 05 28 05:31:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

affichage contenue de MessageBox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

affichage contenue de MessageBox

dimanche 15 mars 2009 à 14:20:36 | affichage contenue de MessageBox

bonapart002

Bonsoir :
le code de dll suivant permet de détecter le le création ,réduction ou un agrandissement d'une fenêtre :
----------------------------
#include <windows.h>
HINSTANCE thismod;
HHOOK hhk;
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
  if(dwReason == DLL_PROCESS_ATTACH)
   thismod = hDll;
return 1;
}

LRESULT CALLBACK CbtHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
  if(nCode >= 0)
  {
      //quand une nouvelle fenetre est créé
      if(nCode == HCBT_CREATEWND)
      MessageBox(NULL, "Fenêtre Créée", "Information", MB_ICONINFORMATION);

      //pour quand on faire une reduction ou un agrandissement
     if(nCode == HCBT_MINMAX)
     MessageBox(NULL, "Fenêtre Réduction / Agrandissement", "Information", MB_ICONINFORMATION);
  
  }

  return CallNextHookEx(hhk, nCode, wParam, lParam);
}

extern "C" __declspec(dllexport) int __stdcall Intercepte()
{  if(!hhk) hhk  = SetWindowsHookEx(WH_CBT, CbtHookCallback, thismod, 0); return (int) hhk; }

extern "C" __declspec(dllexport) void __stdcall FinIntercepte()
{   if(hhk)   { UnhookWindowsHookEx(hhk);   hhk = 0; } }

-----------------------------

si j'exécute le programme client qui utilise cette dll .il m'affiche en boucle infinie le MessageBox "fenetre créée" .
si j'elimine  cette partie (detection de creation de fenetre ):
   if(nCode == HCBT_CREATEWND)
      MessageBox(NULL, "Fenêtre Créée", "Information", MB_ICONINFORMATION);

il ca marche bien .

quel est l'erreur dans ce code ?
et merci


dimanche 15 mars 2009 à 18:04:09 | Re : affichage contenue de MessageBox

juju12

Et bien lorsque tu affiches ton message "Fenêtre créée", une nouvelle fenêtre est créée (celle de la MsgBox), donc émission d'un deuxième message HCBT_CREATEWND, et ainsi de suite...

dimanche 15 mars 2009 à 20:05:01 | Re : affichage contenue de MessageBox

bonapart002

salut:
ok merci .
mais je doit connaitre le nom de l'application ou de la nouvelle fenêtre qui s'affichera .par exemple si la fenêtre qui apparaitre est la fenêtre de Word
 j' interdire son ouverture et afficher un MessageBox ("vous ne pouvez pas ouvrir cette fenetre ").

j'attends ta réponse et merci bcp pour ton aide .

dimanche 15 mars 2009 à 22:01:40 | Re : affichage contenue de MessageBox

juju12

Réponse acceptée !

ben suffit de tester le nom de la fenêtre, par exemple :
if(nCode==HCBT_CREATEWND)
{
   CHAR szwName[12];
   GetWindowText((HWND)wParam,szName,12);
   if(!StrCmp(szName,"Information")) 
   {
      MessageBox(0,"Fermeture","Information",0);
      ...
   }
}


ça devrait marcher.

dimanche 15 mars 2009 à 23:35:47 | Re : affichage contenue de MessageBox

bonapart002

merci bcp juju c ça que je recherche .
lundi 16 mars 2009 à 01:17:45 | Re : affichage contenue de MessageBox

juju12

sauf que je me suis planté, avecStrCmp de shlwapi ça serait plutôt :
if(StrCmp(szName,"Information"))...

lundi 16 mars 2009 à 01:31:22 | Re : affichage contenue de MessageBox

bonapart002

mais désolé ce code ça marche avec le  HCBT_MINMAX  et HCBT_DESTROYWND et d'autre..mais ne ce marche pas avec  HCBT_CREATEWND.
je pense car  avant la création de fenêtre  on ne peut pas tester sur son nom
(
szName)  le nom de fenêtre est vide avant sa création .
mon problème est :je veut afficher un MessageBox seulement si j'ouvre un fenêtre qui  ayant comme nom "MonFenetre" dans les autre cas rien ne s'affichera .
je mit le code suivant:

if(nCode==HCBT_CREATEWND)
{
   CHAR szName[12];
   GetWindowText((HWND)wParam,szName,12);
   if(strcmp(szName,"MonFenetre")) 
   {
     MessageBox(0,"ouvrir monfenetre ","Ouverture",0);
    
   }
else
{// rien à fire
 }

}


mais il m'affiche ce MessageBox  dans tout les cas .
ou est-elle  le probleme?
et merci juju  pour ton aide .

lundi 16 mars 2009 à 13:01:15 | Re : affichage contenue de MessageBox

juju12

au temps pour moi...
par contre ceci devrait aller :

if(nCode==HCBT_CREATEWND)
{
   LPCTSTR lpName=((CBT_CREATEWND)lParam)->lpcs->lpszName;
   if(StrCmp(lpName,"Ma fenêtre") {...}
}
lundi 16 mars 2009 à 13:02:29 | Re : affichage contenue de MessageBox

juju12

avec le nombre correct de () c'est mieux...
if(StrCmp(lpName,"Ma fenêtre")) {...}
lundi 16 mars 2009 à 17:12:02 | Re : affichage contenue de MessageBox

bonapart002

mais ça m'affiche 3 erreur :

-error C2227: la partie gauche de '->lpcs' doit pointer vers un type class/struct/union/générique
-error C2227: la partie gauche de '->lpszName' doit pointer vers un type class/struct/union/générique
-warning C4311: 'cast de type' : troncation de pointeur de 'HHOOK' à 'int'


j 'ai essayé de les corriger mais non, toujours les mêmes erreurs .

voici le code de la dll :
---------------------------------------
#include <windows.h>
#include <string.h>
HINSTANCE thismod;
HHOOK hhk;
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{

  if(dwReason == DLL_PROCESS_ATTACH)
      thismod = hDll;
  return 1;
}


LRESULT CALLBACK CbtHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
  if(nCode >= 0)
  {

f(nCode==HCBT_CREATEWND)
{
   LPCTSTR lpName=((CBT_CREATEWND)lParam)->lpcs->lpszName;
   if(strcmp(lpName,"Ma fenêtre"))
{MessageBox(0,"ouvrir monfenetre ","Ouverture",0);}
 else {// rien a faire }
}



return CallNextHookEx(hhk, nCode, wParam, lParam);
}

extern "C" __declspec(dllexport) int __stdcall Intercepte()
{
  if(!hhk)
      hhk  = SetWindowsHookEx(WH_CBT, CbtHookCallback, thismod, 0);

  return (int) hhk;
}

extern "C" __declspec(dllexport) void __stdcall FinIntercepte()
{
  if(hhk)
  {
      UnhookWindowsHookEx(hhk);
      hhk = 0;
  }
}


----------------------------------

1 2

Cette discussion est classée dans : fenêtre, messagebox, ncode, hhk, if


Répondre à ce message

Sujets en rapport avec ce message

detection d'un messageBox et fermeture automatique [ par elroulianito ] J'aimerai utiliser une fonction issue d'une dll. Le problème est qu'à l'execution de celle-ci une fenêtre de type messagebox apparait m'invitant à cli fenêtre basculant en arrière-plan [ par by_rabbit_08 ] Bien le bonjourj'ai une simple question:J'ai une boite de dialogue qui appelle un Thread et qui lui passe en paramètre son handle (de la boite de dial ma dll à l'aide plz [ par snpier wolf ] Bonjour, j'ais chercher un moyen de récupérer le message wm_close de la fenêtre active.Après avoir parlez avec BruNews, j'ai compris qu'il me Hook souris et Windows 7 64 bits [ par thenaoh ] Bonjour, Je cherche désespérément à faire fonctionner un hook souris basique réalisé en C++. Le hook doit fonctionner sous Windows 7 64 bits, où on p probleme avec la fonction glreadpixels [ par sousoi ] je trouve que on peut implimenter l'algo de z buffer avec opengl et recuperer les donnee avec la fonction de opengl "glreadpixels" mais je trouve un interpreteur sql [ par cobutanisme154 ] bonjours tout le monde, j'ai cherché sur ce site et sur google ,mais je n'arrive pas à trouver un interpréteur sql écrit en c.Quand je dis un interpré Probleme : Sudoku en C [ par seth59222 ] Bonsoir, voila je suis actuellement en première année d'info, donc assez novice et je viens de créer ce petit bout de programme en C qui consiste a ré message erreur access violation [ par beautyordi ] bonjour a tous Je suis débutant et je souhaite juste lancer une fenêtre vierge avec glut j'ai recopier le code de mon bouquin voila mon code: [code=cp shutdown sans message d'erreur ? [ par barth62 ] bonjour alors j'ai fait ce code [b][color=red]en batch[/color][/b] l'extension *.bat [code=autre]@echo off title easy shutdown color 0a :debut echo Ta nombre de documents où un terme apparaît [ par mervat ] le programme ci-dessous détermine le nombre de documents où le mot "terme" apparaît. il est exécutable et il donne comme résultat 2 car le mot "terme"


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales