ChrOnOs83
Messages postés32Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention19 juin 2007
-
30 janv. 2006 à 12:53
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
30 janv. 2006 à 16:06
Bonjour à tous,
Il y a un problème sur lequel je bloque depuis déjà plusieurs jours.
J'ai créé une dll pour faire un hook clavier. Quand j'appelle la fonction de la dll pour activer le hook je n'arrive pas a passé une variable a ce dernier.
Pour mieux me faire comprendre voici un bout du code de la dll:
extern "C" void WINAPI Charger(char fichier[])
{
Socket = sock;
strcpy(CheminFichier,fichier);
HKEYBOARD = SetWindowsHookEx ( WH_KEYBOARD, (HOOKPROC)KeyboardProc, HInst, 0 );
}
CheminFichier est un char[250] déclaré en globale dans la dll.
Je pense que le problème vient du fait que l'instance de la fonction Charger est celle de l'exécutable appelant la dll alors que l'instance du hook (HInst) est l'instance de la dll. Etant un peu un noob il est possible que je me trompe totalement... C'est juste l'impression que tout cela me donne.
Bref au final lorsque je fais un MessageBox de CheminFichier dans le thread du hook ou dans n'importe quelle fonction appelé par ce dernier je me rends compte que la variable est vide. Alors fait ce MessageBox a partir d'une autre fonction extern "C", donc appelé du l'exécutable, CheminFichier vaut ce qu'il devrai valoir!
Je me demande donc comment pouvoir passer ce problème. Peut-être existe t'il une alternative au extern "C" qui ferai en sorte que l'instance donnée a la fonction soit celle de la dll.