Les dejo un simple DllCall que escribí en Cramel utilizando asm inline, para los que no lo sepan, se utiliza para llamar funciones de manera dinámica.
Importar "Cramel.cml"
Proc DllCall(Dll,Función:Cadena,Referencia ParamArray[]:Entero):Entero
!push DWORD[Param_Dll]
!call [a_LoadLibrary]
!test eax,eax
!jz .Fin
!mov ebx,eax
!xor edx,edx
!mov edi,DWORD[Param_ParamArray]
!mov edi,DWORD[edi]
!mov eax,DWORD[edi-4]
!mov ecx,4
!div ecx
!mov ecx,eax
!test ecx,ecx
!jz .CallProc
!@@:
!push DWORD[edi+ecx*4-4]
!loop @b
!.CallProc:
!push DWORD[Param_Función]
!push ebx
!call [a_GetProcAddress]
!test eax,eax
!jz .Fin
!call eax
!.Fin:
FinProc
Var Parámetros[]:Entero
Var Str:Cadena
Var Str2:Cadena
Str = "Hola Mundo"
Str2 = "Title"
ReDim Parámetros,4
Parámetros[0] = 0
Parámetros[1] = Str@@
Parámetros[2] = Str2@@
Parámetros[3] = 16
DllCall("User32","MessageBoxA",Parámetros)
¡Saludos!