[Cramel] Función DllCall

Iniciado por Yuki, Julio 23, 2017, 10:09:57 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

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.

Código: php
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!