begin process at 2012 05 30 14:08:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Programme bloqué


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

Programme bloqué

samedi 30 octobre 2004 à 18:01:34 | Programme bloqué

goutbouyo

Membre Club
Salut,

J'ai l'impression que mon programme se bloque au niveau d'un case WM_USER+1:

J'ai ma dll :

LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode >= 0)
{
//quand une fenetre est activé
if(nCode == HCBT_ACTIVATE) //ACTIVATE
{
if (hDlg = FindWindow(g_val,NULL))

{
if (Dlg=FindWindow(NULL,"Protection activée"))
{
PostMessage(Dlg, WM_USER+1, 0, 0);
}

}
}

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

extern "C" __declspec(dllexport) int __stdcall Intercepte(char val[256])
{
if(!hhk)
{
sprintf(g_val,"%s",val);
hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0);


}


return (int) hhk;
}

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


Dans mon programme, je demande d'intercepter:

//Bouton activer
case IDC_ACTIVER:

GetDlgItemText(hwnd,IDC_EDIT2,ligne2,sizeof ligne2); //récupère mot passe saisi

//si mot de passe bon
if (strcmp(ligne2,pass)==0)
{
MessageBox(NULL, "Mot de passe accepté\nProtection activée ", "Succés",MB_OK| MB_ICONINFORMATION);

if(!actif)
actif = TRUE;
Intercepte("Outlook Express Browser Class"); SetWindowText(hwnd,"Protection activée");
}
else MessageBox(NULL, "Mot de passe erroné\nDésolé ...", "Erreur",MB_OK| MB_ICONWARNING);
return TRUE;


Je traite le WM_USER+1

case WM_USER+1:
FinIntercepte(); //arrête la recherche de la fenêtre
MessageBox(NULL, "Mot de passe accepté\nProtection activée ", "Succés",MB_OK| MB_ICONINFORMATION);
return TRUE;


Le problème c'est que la messagebox dans WM_USER+1 n'apparait que si outlook est là(normal) et squand je clique sur mon programme(pas normal...).

Pouvez vous m'aider SVP ???
samedi 30 octobre 2004 à 18:42:25 | Re : Programme bloqué

AlexMAN

Membre Club
tu n'aurais pas oublié un break ou un return au dessus du case WM_USER + 1 ?

Au fait, fais un #define WM_MYMSG (WM_USER + 1)
Ce sera plus clair ;)
samedi 30 octobre 2004 à 19:22:09 | Re : Programme bloqué

goutbouyo

Membre Club
Non j'ai pas oublié de return TRUE;

Ce qui est bizarre, c'est que si je met dans ma dll:
if (hDlg = FindWindow("Outlook Express Browser Class",NULL))
Ca met direct le message.
Alors que si je met:
if (hDlg = FindWindow(g_val,NULL))
Ca met le message seulement si je clique sur mon programme.

On dirait que mon programme attend de recevoir le focus avant de traiter le message.
samedi 30 octobre 2004 à 19:37:32 | Re : Programme bloqué

goutbouyo

Membre Club
En fait ça vient encore de ma dll.

Comme ça ça marche pas :

#include <windows.h>
#include <stdio.h>

#define WM_ALERTE (WM_USER+3)
HINSTANCE thismod;
HINSTANCE hInstance;
HHOOK hhk;
HWND hDlg;
HWND Dlg;
char g_val[256];
char val[256];
int debut;


BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
thismod = hDll;

return 1;
}


LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode >= 0)
{
//quand une fenetre est activé
if(nCode == HCBT_ACTIVATE) //ACTIVATE
{
if (hDlg = FindWindow(g_val,NULL))

{
if (Dlg = FindWindow(NULL,"Protection activée"))
{
PostMessage(Dlg, WM_ALERTE, 0, 0);
}

}


}

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

extern "C" __declspec(dllexport) int __stdcall Intercepte(char val[256])
{
if(!hhk)
{
sprintf(g_val,"%s",val);
hhk = SetWindowsHookEx(WH_CBT, kbdWinAmp, thismod, 0);

}
return (int) hhk;
}

extern "C" __declspec(dllexport) void __stdcall FinIntercepte()
{
if(hhk)
{
UnhookWindowsHookEx(hhk);
hhk = 0;
}
}
Par contre là ça marche :

strcpy(g_val,"Outlook Express Browser Class");
if (hDlg = FindWindow(g_val,NULL));

samedi 30 octobre 2004 à 23:20:16 | Re : Programme bloqué

aardman

Membre Club
Salut,
g_val, comme son nom semble l'indiquer, ne devrait pas etre dans une section shared plutot ?
Car la, lorsque la dll est mappée dans un autre processus, g_val n'a toujours pas été initialisé au moment ou tu appeles FindWindow(...).
dimanche 31 octobre 2004 à 02:07:19 | Re : Programme bloqué

goutbouyo

Membre Club
Tu as sans doute raison.

Je le met où alors le g_val ???
Dans un header ?
dimanche 31 octobre 2004 à 02:36:28 | Re : Programme bloqué

aardman

Membre Club
Réponse acceptée !
Salut,
Il me semble que c'est un truc de ce genre, j'en ai jamais utilisé en fait donc faudra peut etre que tu cherches un peu:

#pragma data_seg("Shared")
char g_val[256];
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")

il faut bien comprendre que la fonction Intercepte() qui initialise la valeur de g_val est appelée 1 fois pour la dll qui est dans ton processus... mais pour les autres dll mappées dans les autres processus elle n'est pas appelée, et donc g_val n'est pas initialisée.
dimanche 31 octobre 2004 à 02:40:28 | Re : Programme bloqué

aardman

Membre Club
Salut,
Le bout de code que j'ai donné plus haut est valable pour VC++/VS. Pour les autres je sais pas..
dimanche 31 octobre 2004 à 10:31:06 | Re : Programme bloqué

goutbouyo

Membre Club
VC++ 6 me met pour ton code :

LINK : warning LNK4039: section "Shared" specified with /SECTION option does not exist

Pourtant ton code doit être bon, je l'ai vu dans une source.
dimanche 31 octobre 2004 à 11:44:49 | Re : Programme bloqué

goutbouyo

Membre Club
Faut mettre quoi dans LINK.
J'ai vus sur MSDN qu'il fallait rajouter l'option /section mais j'y arrive pas ...


Cette discussion est classée dans : programme, code, wm, mb, hhk


Répondre à ce message

Sujets en rapport avec ce message

arreter un autre programme !!! [ par FLOPPY ] je cherche un code en C qui permet de stopper un programme (autre que le mien) charger en memoire (si possible avec le code d'erreur que cette fonctio récupérer code assembleur [ par none77 ] Bonjour,j'aimerai savoir si lorsque je programme en C il m'est possible de récupérer le code assembleur automatiquement.Je demande ca car je dois util au secccoooouuuuuurrrrr protection d'un programme [ par zorque ] je suis entraint de faire un programmeet je voudrais le proteger comme les sharwarescomment faire pour ke le programme debloque les option si l'utilis Idle - Hook - dll [ par Manson ] Bonjour,voila, j'ai trouve le code d'une dll permettant de savoirdepuis combien de temps le PC est inactif.Mais voila, elle a un probleme, quelque foi Gestion de la mémoire ! [ par ZogStriP ] Je voudrais savoir si il existe un programme ou une fonction (qui marche sous windows XP) qui me permettrais de savoir exactement combien d'espace pre Aidez moi programme sur des liens hypertexes et ... [ par borower ] BonjoursJe suis un debutant et je n'arrive pas a mettre en forme un code convenable pour un programme.Je recherche le code source d'un programme en C Conversion d'un char en LPCSTR ? [ par Xilofeon ] Bonjour d'un débutant en C++Voila j'arrive pas à convertire un char en LPCSTRVoici la parti du code ki me pose pb :...void LitTexte(HKEY HK, !!!! UNTIL !!!!! [ par ZogStriP ] Je voudrais traduire un programme VB en C++ mais ce programme contient une partie :Do(..)Loop Until(l == j)et je n'arrive pas à la transformer en C++ Une fenêtre vide = exe de 152 ko... [ par Inekman ] Salut tout le monde,Ca fait pas mal de temps que je lis des livres sur le C++ et donc je m'y suis mis réellement hier soir car j'ai enfin compris comm [C] Interdire l'accès à certaines touches [ par Cow_B ] SalutBon, cette fois ci mon souci est le suivant : je demande à un utilisateur de rentrer un chiffre kelkil soit. Le problème c'est que si la personne


Nos sponsors


Sondage...

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,404 sec (3)