J'essaie d'appeler une fonction exportée par une dll de windows :
Code :
 - typedef void (CALLBACK *LPFNDLLFUNC)(LPCSTR);
 - LPFNDLLFUNC functionPtr = NULL;
 - functionPtr = (LPFNDLLFUNC)GetProcAddress(hDll, "Control_RunDLL" );
 - if (functionPtr == NULL) {
 -     MessageBox(NULL, "error getting proc address", "error", MB_OK | MB_ICONERROR);
 - } else {
 -     functionPtr(path);
 - }
 
  | 
En mode debug, je me prends un message disant "The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."
En mode release, l'appel passe, mais ne fait pas ce que j'attends de lui, et je me prends une access violation _après_.
 
J'ai essayé en changeant la convention d'appel dans le typedef, sans effet.
 
Voila là ou ca devient drôle : la fonction que je veux appeler est dans shell32.dll. Elle n'est bien sur pas documentée par M$, et donc je ne suis sur ni du type de retour, ni du nombre et du type des arguments...
La seule chose que je sais, c'est qu'en lançant un rundll32 shell32.dll,Control_RunDLL "appwiz.cpl" e, ligne de commande, ça marche.
Quelqu'un a une idée, où je suis en train de tenter un truc impossible ?
 
 ---------------
			
Au royaume des sourds, les borgnes sont sourds.