从内存中加载并调用DLL的代码,很邪恶,VBGOOD的仙剑魔同学从C翻译成VB的。
直接在内存中调用DLL中的函数,根据这个代码会产生很邪恶的想法,进而编出很邪恶的程序。。。。我啥也没说。。。
使用方法:
Dim data() As Byte
Dim handle As Long
Dim fun_stdcall As Long
Open "SampleDLL.dll" For Binary As #1
ReDim data(0 To LOF(1) - 1)
Get #1, , data
Close #1 '先将DLL读取BYTE数组中
handle = MemoryLoadLibrary(VarPtr(data(0))) '加载DLL
fun_cdecl = MemoryGetProcAddress(handle, "subNumbers") '取得函数地址
Debug.Print CallFunc_cdecl(fun_cdecl, 1, 2) '调用函数
Call MemoryFreeLibrary(handle) '擦屁股。。。
Erase data '释放数组内存
VB代码下载:
也附上C的源代码吧: