Bonjour, je voudrais créer une fonction permettant d'appeller des APIs sans avoir besoins de déclarer leur prototype ni en utilisant les .lib. Lorsque j'éxécute mon code, ma msgbox apparait, parfaite. Après que j'appuie sur OK, erreur. Ça serait le registre ESP le problème. j'ai lu qu'il y a des registres qu'il fallait sauver et restaurer mais comme mes connaissances en asm sont très limitées, je ne sais pas comment faire.
int _stdcall StdCallAPI(LPCSTR dllName, LPCSTR APIName,int Params[], int ParamsCount)
{
HMODULE hLib;
FARPROC pProc=0;
int iFlag=MB_ICONASTERISK+MB_YESNO;
int RetVal;
char* texte="allo";
hLib=LoadLibrary("User32.dll"/*dllName*/);
pProc=GetProcAddress(hLib,"MessageBoxA"/*APIName*/);
__asm
{
//paramètres pour l'api [
mov eax,20
push eax
mov eax,texte
push eax
mov eax,texte
push eax
mov eax,0
push eax
// ]
call pProc //appel de l'api
mov RetVal,eax //envoie de la valeur dans la variable RetVal
// nettoyage [
pop ebx//(nécéssaire?)
pop ebx
pop ebx
pop ebx
pop ebx
// ]
}
FreeLibrary(hLib);
return RetVal;
}
Merci
VIVE LE QUÉBEC!
Essayez ça
Dim l As Long: Do Until l = -1: l = l + 1: Loop
|
p.s.Si vous l'avez essayé, vous allez attendre longtemps ...