DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 16 août 2004 à 18:46
darkpoulpo Messages postés 76 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 29 novembre 2009 - 2 août 2007 à 19:13
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/25450-dll-hook-en-ressource-binaire-du-prog-win32

darkpoulpo Messages postés 76 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 29 novembre 2009
2 août 2007 à 19:13
il manque UnlockResource() non?
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
30 oct. 2005 à 14:20
Ok alors je donne l'adresse de la suite de l'histoire avec une dll vierge :
http://www.cppfrance.com/forum.v2.aspx?ID=590493
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 oct. 2005 à 14:17
Je laisse le reste des comments, si d'autres ont le même genre de problème on peut espérer que ça leur servira.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
30 oct. 2005 à 14:01
BruNews grâce à sa connaissance en programmation et aux commentaires que je lui ai demandé d'effacer m'as appris des choses que je vous résumes :
1) Normalement si il n'y a pas de problème le point d'entrée de la dll DllMain() est appellé que la dll soit appellée de façon statique ou dynamique
2) Pour savoir si un hook a fonctioné il faut voir si la valeur de retour de la fonction SetWindowsHookEx() est non nulle.
3) La valeur de retour de LoadLibrary() donne le handle attribué par le système à la dll

Merci encore à BruNews et je lui mets 10/10 !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2005 à 23:49
Vire cette histoire de classe au complet, il n'y a que le DllMain d'intéressant là dedans. Remets normalement tes fonctions à exporter.
Je bosse avec VC, je ne connais donc pas les subtilités de devcpp. Essaie de voir s'il accepte un fichier def pour l'export des fonctions.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 oct. 2005 à 23:38
Ok mais ça marche pas en global

Je fais un projet dll vierge sous dev et il me donne :
1) dllmain.cpp
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>

DllClass::DllClass()
{

}


DllClass::~DllClass ()
{

}


BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;

case DLL_PROCESS_DETACH:
break;

case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;
}

/* Returns TRUE on success, FALSE on failure */
return TRUE;
}

2) dll.h
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


class DLLIMPORT DllClass
{
public:
DllClass();
virtual ~DllClass(void);

private:

};


#endif /* _DLL_H_ */


Question : C'est quoi et qu'est ce que je supprime et où je mets mon code ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2005 à 21:24
C'est le retour de LoadLibrary() qui te le donne, le même que le system enverra à DllMain s'il trouve ce point d'entrée dans la dll. Suffit donc d'exporter une fonction du genre SetHandle(HINSTANCE hDll) et tu envoies ce que t'aura donné LoadLibrary.
Tout ceci ne sera que du bricolage, tu ferais mieux de voir comment on fait une dll correcte avec devcpp sinon tourne toi vers VC.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 oct. 2005 à 20:26
Oui mais pour te demander comment aloué un handle à la fonction !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2005 à 19:44
Mais l'appel de DllMain n'est pas 'dynamique' ou non, c'est le chargeur du système qui l'appelle, on n'a donc pas à s'en occuper si la dll est construite correctement.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 oct. 2005 à 19:38
C'est ce que je dis la fonction DllMain n'est pas appellée dynamiquement et le hook ne fonctionne pas.
Si je l'appelle avec l'instance du programme puis je fais le hook il est opérationel mais pas global !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2005 à 19:34
Dans la source la dll est chargée dynamiquement et DllMain est bien appelée sinon hook ne fonctionnerait pas à cause du hdll qui vaudrait 0.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 oct. 2005 à 19:20
Bonjour,

J'ai testé et la fonction DLLMain n'est pas appellé en allocation dynamique.

Comment l'apeller en lui donnant un handle global.

J'ai aussi testé que le hook est ok quand je donne l'hinstance du programme mais ne se produit avec WH_KEYBOARD_LL et WH_KEYBOARD de hook.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
29 oct. 2005 à 11:17
ok je suis sous dev mais les différences sont pas énormes si pas de MFC alors voilà la dll (les fonctions qui sont importés sont dans le programme au cas ou le hook marche) :
#include <windows.h>


typedef bool (__stdcall* lpMyCallBack) (LPSTR szMsg);
typedef bool (__stdcall* lpMyCallBack_int) (int szMsg);
typedef bool (__stdcall* lpMyCallBack_char) (char szMsg);
typedef bool (__stdcall* lpMyCallBack_bool) (bool szMsg);

lpMyCallBack envoiedonnee_char;
lpMyCallBack_int envoiedonnee_int,envoiedonneeconvert_int;
lpMyCallBack_char envoiedonneeconvert_char;
lpMyCallBack_bool envoiedonnee_bool,envoiedonneeconvert_bool;
void __declspec(dllexport) initdll(
lpMyCallBack dw_envoiedonnee_char,lpMyCallBack_int dw_envoiedonnee_int,
lpMyCallBack_bool dw_envoiedonnee_bool,lpMyCallBack_int dw_envoiedonneeconvert_int,
lpMyCallBack_char dw_envoiedonneeconvert_char,lpMyCallBack_bool dw_envoiedonneeconvert_bool)
{
envoiedonnee_char=(lpMyCallBack)dw_envoiedonnee_char;
envoiedonnee_int=(lpMyCallBack_int)dw_envoiedonnee_int;
envoiedonnee_bool=(lpMyCallBack_bool)dw_envoiedonnee_bool;
envoiedonneeconvert_int=(lpMyCallBack_int)dw_envoiedonneeconvert_int;
envoiedonneeconvert_char=(lpMyCallBack_char)dw_envoiedonneeconvert_char;
envoiedonneeconvert_bool=(lpMyCallBack_bool)dw_envoiedonneeconvert_bool;
}


HHOOK hHook = 0; // Handle du hook global
HINSTANCE hExe; // Handle de notre dll

BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason DLL_PROCESS_ATTACH) hExe hDll;
return 1;
}

// Fonction de gestion du hook
LRESULT CALLBACK kbdProc(int nCode, WPARAM wParam, LPARAM lParam) {
// VK_F11 0x7A, VK_CONTROL 0x11 , VK_SHIFT = 0x10
if(nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(wParam != VK_F11)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(!(lParam & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam); // UP pour certitude 1 SEULE FOIS
if(!(GetKeyState(VK_CONTROL) & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam);

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

int __declspec(dllexport) DemarrerHook()
{
if (hHook==0)
{
hHook = SetWindowsHookEx(WH_KEYBOARD, kbdProc, hExe, 0);
//hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC) HookProc, hExe, 0);
//etat_hook=1;//Mettre le flag d'etat à 1 (actif)
}
return (int) hHook;
}

int __declspec(dllexport) StopperHook()
{
if (hHook!=0)
{
UnhookWindowsHookEx(hHook);
//etat_hook=0;// Mettre le flag d'état à 0 (inactif)
}
return (int) hHook;
}

/******** In exe **********/
typedef void (__stdcall* lpMyCallBack_void) ();
typedef int (__stdcall* lpMyCallBack_intr) ();
typedef bool (__stdcall* lpMyCallBack) (LPSTR szMsg);
typedef bool (__stdcall* lpMyCallBack_int) (int szMsg);
typedef bool (__stdcall* lpMyCallBack_char) (char szMsg);
typedef bool (__stdcall* lpMyCallBack_bool) (bool szMsg);

typedef void (__stdcall* lpDemandeCallBack_param) (
lpMyCallBack dw_envoiedonnee_char,lpMyCallBack_int dw_envoiedonnee_int,
lpMyCallBack_bool dw_envoiedonnee_bool,lpMyCallBack_int dw_envoiedonneeconvert_int,
lpMyCallBack_char dw_envoiedonneeconvert_char,lpMyCallBack_bool dw_envoiedonneeconvert_bool);
lpMyCallBack_intr DemarrerHook;
lpMyCallBack_intr StopperHook;
lpDemandeCallBack_param initdll;
lpMyCallBack_void test;

bool __stdcall CALLBACK envoiedonnee(char* donnees);
bool __stdcall CALLBACK envoiedonnee(int donnees);
bool __stdcall CALLBACK envoiedonnee(bool donnees);
bool __stdcall CALLBACK envoiedonneeconvert(int donnees);
bool __stdcall CALLBACK envoiedonneeconvert(char donnees);
bool __stdcall CALLBACK envoiedonneeconvert(bool donnees);
HANDLE hDLL = LoadLibrary("VNC.dll");
if (hDLL==NULL)
{
MessageBox(NULL,"VNC.dll est introuvable !",0,16);
return -1;
}

DemarrerHook = (lpMyCallBack_intr)
GetProcAddress((HINSTANCE)hDLL, "_Z12DemarrerHookv");
if (DemarrerHook == NULL)
{
MessageBox(NULL,"DemarrerHook est introuvable dans la DLL VNC.dll",0,16);
return -1;
}
StopperHook = (lpMyCallBack_intr)
GetProcAddress((HINSTANCE)hDLL, "_Z11StopperHookv");
if (StopperHook == NULL)
{
MessageBox(NULL,"StopperHook est introuvable dans la DLL VNC.dll",0,16);
return -1;
}

initdll = (lpDemandeCallBack_param)
GetProcAddress((HINSTANCE)hDLL, "_Z7initdllPFbPcEPFbiEPFbbES3_PFbcES5_");
if (initdll == NULL)
{
MessageBox(NULL,"initdll est introuvable dans la DLL VNC.dll",0,16);
return -1;
}

initdll(&envoiedonnee,&envoiedonnee,&envoiedonnee, &envoiedonneeconvert,&envoiedonneeconvert,&envoiedonneeconvert);

if (DemarrerHook()!=0)
printf("\n\nHook\tOK");
else
printf("\n\nHook\tERREUR");
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2005 à 01:50
Si tu bosses sur VS je peux jeter un oeil à ton projet sinon je ne peux rien y faire, à ce point tout semble pourtant bon.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 23:27
HHOOK hHook = 0; // Handle du hook global
HINSTANCE hExe; // Handle de notre dll

BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason DLL_PROCESS_ATTACH) hExe hDll;
return 1;
}
LRESULT CALLBACK kbdProc(int nCode, WPARAM wParam, LPARAM lParam) {
// VK_F11 0x7A, VK_CONTROL 0x11 , VK_SHIFT = 0x10
if(nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(wParam != VK_F11)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(!(lParam & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam); // UP pour certitude 1 SEULE FOIS
if(!(GetKeyState(VK_CONTROL) & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam);

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

int __declspec(dllexport) DemarrerHook()
{
if (hHook==0)
{
hHook = SetWindowsHookEx(WH_KEYBOARD, kbdProc, hExe, 0);
//hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC) HookProc, hExe, 0);
//etat_hook=1;//Mettre le flag d'etat à 1 (actif)
}
return (int) hHook;
}

Voilà le prog me retourne toujours 0 !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 23:22
Ton compilo ne gueule pas pour ta kbdProc(), manque un return final hors de tout if.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 23:12
Une idée comme je ne connais pas ton compilo:
HHOOK hHook = 0;
Faut toujours garantir le zéro sinon test ultérieur pas certain.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 23:12
retourne 0 avec :
LRESULT CALLBACK kbdProc(int nCode, WPARAM wParam, LPARAM lParam) {
// VK_F11 0x7A, VK_CONTROL 0x11 , VK_SHIFT = 0x10
if(nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(wParam != VK_F11)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(!(lParam & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam); // UP pour certitude 1 SEULE FOIS
if(!(GetKeyState(VK_CONTROL) & 0x80000000))
return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int __declspec(dllexport) DemarrerHook()
{
if (hHook==0)
{
hHook = SetWindowsHookEx(WH_KEYBOARD, kbdProc, hExe, 0);
}
return (int) hHook;
}
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 23:03
ben tu vois que y a pas besoin de MessageBox, y a plus qu'à chercher l'erreur.
Le mieux tu mets un de mes exemples à coté de ton code et tu regardes ce qui diffère:
HOOK SYSTEM SUR WM_MOUSEWHEEL (WIN32)
http://www.cppfrance.com/code.aspx?ID=25998
DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)
http://www.cppfrance.com/code.aspx?id=25450
HOOK F11 SUR IE (WIN32)
http://www.cppfrance.com/code.aspx?id=18202
HOOK CLAVIER
http://www.cppfrance.com/code.aspx?id=17818
LIMITE LE NBR DE FENETRES IE V2 (WIN32)
http://www.cppfrance.com/code.aspx?id=17387
etc, etc...
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 22:57
La fonction renvoie NULL
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 22:39
Faut mettre un retour sur DemarrerHook() ainsi tu sauras si hook lancé.
Regarde dans mes exemples:
int __stdcall DemarrerHook()
{
....
return (int) hook;
}
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 22:36
Oui mais le pb c'est que aucune action n'est effectué ni MsgBox ni printf rien donc il y a qq chose.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 22:34
etat_hook est inutile, hHook à zéro fera idem pour test.
Toute procédure de hook doit être le plus rapide possible sinon le système passera son chemin pour ne pas se mettre en péril. Il ne faut donc absolument pas mettre de fonction bloquante comme MessageBox.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 22:24
HHOOK hHook; // Handle du hook global
HINSTANCE hExe; // Handle de notre dll
bool etat_hook=false;

BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason DLL_PROCESS_ATTACH) hExe hDll;
return 1;
}

// Fonction de gestion du hook
LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, LPARAM lParam)
{
MessageBox(NULL,"Vous êtes dans un hook","HookProc",0);
// [...]
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
void __declspec(dllexport) DemarrerHook()
{
if (!etat_hook)
{
hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC) HookProc, hExe, 0);
MessageBox(NULL,"Hook démarré !","DemarrerHook",0);
etat_hook=1;//Mettre le flag d'etat à 1 (actif)
}
}

void __declspec(dllexport) StopperHook()
{
if (etat_hook)
{
UnhookWindowsHookEx(hHook);
etat_hook=0;// Mettre le flag d'état à 0 (inactif)
}
}

Voici mon code in DLL et marche pas quand j'appelle DemarrerHook alors que la messagebox comme quoi que le hook est parti s'affiche !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 oct. 2005 à 22:15
Rien à voir avec le fait que soit linké ou chargé en dynamique, DllMain sera appelé dans tous les cas.
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
28 oct. 2005 à 22:07
Bonjour,

DllMain n'est chargé que si la dll est aloué de façon statique ?
(c'est à dire avec les options dans le linker)

Si on l'ouvre en dynamique comment on fait ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 17:48
Analyse le deroulement et tu verras.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 17:42
je parlais de variable globale,i.e. qui ne sont pas variables (pas pusher en pile koi),
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 16:07
Windows est un multitache preemptif ou donc user a toujours priorite. Le systeme va placer les entrees clavier dans la pile d'appels du process de 1er plan.
Si tu masques ta fenetre, il y en aura bien une autre en 1er plan a sa place, ok ? alors tu ne reçois plus les touches, voila pourquoi hook clavier GLOBAL OBLIGATOIRE et par force en dll.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 15:58
mias pour faire tout cela on est oblige d'utiliser des globales ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 12:06
Regarde Richter chapitre 20, il fait une analyse complete de tout cela.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 11:54
oui, normalement 4 fois.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 11:49
mais le systems apelle DllMain pou chaque cas, i.e. une fois pour ATTACH et une autre pour DETACH ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 10:12
dwReason est ATTACH ou DETACH pour PROCESS ou THREAD. Pour rester null faudrait que la dll ne soit pas chargee par un process, le probleme ne se pose donc pas.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 09:00
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if(dwReason DLL_PROCESS_ATTACH) thismod hDll;
return 1;
}


***************
si dwReason ne vaut pas , alors thismode vaut NULL, donc pour le reste du programme c'est pas embetant ? et comment on sait ce que faut dwReason ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 00:41
Le systeme s'en occupe tout seul. Tu n'appelles le chargement du hook qu'1 seule fois, le systeme mappera dans tout processus en cours comme dans tous ceux qui demarreraient ulterieurement.
C'est magique Windows.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 00:22
donc si on a un nouveau programme est au premier plan, alors on recharge encore la fonction du hook sur clavier ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 00:15
S'il n'est pas global (en DLL) ben non.
On le met en dll pour que le systeme puisse en mapper une copie dans chaque processus. Ainsi il s'execute quel que soit le prog de 1er plan.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 août 2004 à 00:08
Si je n'es plus le focus, mon hook ne marche plus ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2004 à 21:30
Doit etre dans une dll si tu veux recup quand ton prog n'a plus le focus. C'est un hook global.
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
16 août 2004 à 20:19
Je ne comprend pas l'utilisation d'un DLL, pour recupere CTRL+SHIT+F11/12 je peux simplement faire un HHOOK sur le clavier non ?
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
16 août 2004 à 18:46
oki merci je fais etudier ca (si possible rapidement)
Rejoignez-nous