Bon en essayant la version proposée par nirgal76, j’ai trouvé le problème, le test de la version de nirgal76 m’a inquiété car même en enlevant la boucle de la fonction 1, le retour immédiat de la fonction 1 me tuait aussi ma fenêtre ! J’ai même enlevé le sethook de la fonction 1 qui ne faisait plus rien et qui à son retour me tuait quand même ma fenêtre !! alors que la fonction 2 ne me plantait pas la fenêtre. Je me suis donc dit que l’erreur devait être très grossière !
Le début de ma fonction 1 commençait ainsi :
extern "C" __declspec(dllexport) DWORD WINAPI SetHook(LPVOID lpParameter){}
Le début de ma fonction 2 commençait ainsi ::
extern "C" __declspec(dllexport) DWORD WINAPI StopHook(){}
J’ai simplement modifié le début de la fonction 1 ainsi :
extern "C" __declspec(dllexport) DWORD WINAPI SetHook(){}
Je pensais que le LPVOID lpParameter que j’avais recopié depuis un exemple était tout simplement inutile puisque pas utilisé et qu’il n’empêchait pas la fonction 1 de fonctionner correctement, par contre il s’avère que c’est lui qui me faisait planter ma fenêtre au retour de la fonction 1. Après donc un premier nouveau test ma dll (avec boucle interne) fonctionne correctement et ne me plante plus ma fenêtre à son retour. Pour l’instant je n’ai pas retesté la version simplifiée (sans boucle interne) de nirgal76, a priori, je ne vois pas pourquoi elle ne marcherait pas en liaison avec mon programme principal. Toutefois, il doit y avoir une restriction à mon sens avec cette version simplifiée, il faut que je vérifie, mais ma version avec boucle interne offre l’avantage que je peux lancer ma dll indépendamment de mon programme principal par un simple : rundll32 mydll.dll,SetHook. Pour la version simplifiée (sans boucle interne) ça me paraît, a priori, compromis.
Je vous remercie et je suis navré d’avoir pris autant de votre temps.
Cordialement,
Partager