HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011
-
27 mars 2007 à 00:05
clempar55
Messages postés59Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention 4 avril 2007
-
27 mars 2007 à 16:31
<xml xmlns="">
<mshelp:keyword index="A" term="_win32_SetWindowsHookEx">
</mshelp:keyword>
<mshelp:keyword index="A" term="_win32_SetWindowsHookEx_cpp">
</mshelp:keyword>
<mshelp:toctitle title="SetWindowsHookEx Function">
</mshelp:toctitle>
<mshelp:rltitle title="SetWindowsHookEx Function ()">
</mshelp:rltitle>
<mshelp:keyword index="F" term="SetWindowsHookEx">
</mshelp:keyword>
<mshelp:keyword index="K" term="SetWindowsHookEx">
</mshelp:keyword>
<mshelp:attr name="TopicType" value="kbRef">
</mshelp:attr>
<mshelp:attr name="Locale" value="kbEnglish">
</mshelp:attr>
<mshelp:attr name="DevLang" value="C++">
</mshelp:attr>
<mshelp:attr name="Technology" value="WinUI">
</mshelp:attr>
<mshelp:attr name="TechnologyVers" value="kbWinUI">
</mshelp:attr>
<mshelp:attr name="DocSet" value="WCSDK">
</mshelp:attr>
<mshelp:attr name="DocSet" value="LHSDK">
</mshelp:attr>
<mshelp:attr name="DocSet" value="PSDK">
</mshelp:attr>
<mshelp:attr name="TargetOS" value="Windows">
</mshelp:attr>
<mshelp:attr name="APIName" value="SetWindowsHookExA">
</mshelp:attr>
<mshelp:attr name="APIName" value="SetWindowsHookExW">
</mshelp:attr>
<mshelp:attr name="TopicType" value="apiref">
</mshelp:attr>
<mshelp:attr name="APIName" value="SetWindowsHookEx">
</mshelp:attr>
<mshelp:attr name="APIType" value="DllExport">
</mshelp:attr>
<mshelp:attr name="APILocation" value="user32.dll">
</mshelp:attr> n'est donc plus appellé, par contre le hook fonctionne, la fonction de hook est bien appellée. Est ce normal ?
J'ai trouvé ça sur MSDN :
</xml>"If the input comes from a call to keybd_event, the input was "injected". However, the WH_KEYBOARD_LL hook is not injected into another process. Instead, the context switches back to the process that installed the hook and it is called in its original context. Then the context switches back to the application that generated the event."
J'utilisais le DLL_PROCESS_ATTACH pour initialiser mes variables du coup je peux plus.
Thanks <xml xmlns=""> in advance <mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr></xml>
<dd><dl><dt>
</dd></dl>
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 27 mars 2007 à 00:11
ça a coupé une partie du message...grrr
Bonjour,
J'utilisais un hook clavier classic qui fonctionnait nickel avec fonction de hook dans une DLL externe,puis je suis passé à un hook Low Level <name>WH_KEYBOARD_LL, et la problème, le point d'entrée de ma DLL (DllMain) n'est plus appellé, par contre le hook fonctionne, la fonction de hook est appellée. Est ce normal ? </name><link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}
clempar55
Messages postés59Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention 4 avril 2007 27 mars 2007 à 09:56
Tu utilise quel compilateur ? Si c'est GCC (avec Dev-Cpp par exemple) essaye de déclarer DllMain en __declspec(dllexport) car je crois qu'il ne le fait pas par défaut
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 27 mars 2007 à 11:53
Bonjour [auteurdetail.aspx?ID=414682 clempar55],
Merci pour la réponse.
J'utilise Visual C++ 2005 Express Edition, effectivement j'avais deja rencontré ce problème quand je codais sous CodeBlocks avec un hook classic <name>WH_KEYBOARD. Mais la ça n'est pas ça. En fait lors d'un hook de bas niveau la DLL n'est plus injectée dans l'espace mémoire des processus il est donc normale que la fonction DllMain ne soit pas appellée. (corrigez moi si je me trompe) </name><link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}
clempar55
Messages postés59Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention 4 avril 2007 27 mars 2007 à 16:31
@HeavenForsaker: Si tu n'utilise pas GCC alors ce n'est pas ca le problème. Je n'ai jamais utilisé de hook WH_KEYBOARD_LL mais si en effet la dll n'est pas mappée il paraitrait logique que DllMain ne soit pas apellé (reste à confirmer). Sinon pour initialiser tes variables tu peux le faire au moment de leur déclaration.
@BruNews: désolé je viens de refaire un test et en fait ce n'est pas
__declspec(dllexport) qu'il fallait préciser mais extern "C" (enfin,
uniquement lorsqu'on compile en C++), sinon DllMain n'est pas appellé
au chargment de la dll. Donc en effet pas besoin de l'exporter mais il
faut quand même préciser extern "C". GCC est parfois bien étrange ...