风
风铃夜思雨
Unregistered / Unconfirmed
GUEST, unregistred user!
内存装载DLL并调用 函数库<br>版本:1.0.0.1<br>作者:风铃夜思雨<br>网站:Http://Www.SkyGz.Com<br>日期:2008-06-05<br><br>说明:该函数库只提供D5、D6、D7版本,不提供源码。<br><br>函数原型<br>Function _LoadLibraryA(FileName: PAnsiChar): hModule; stdcall;<br>Function _LoadLibraryW(FileName: PWideChar): hModule; stdcall;<br>Function _LoadLibraryFromResourceA(Instance: THandle; Name, ResType: PAnsiChar): hModule; stdcall;<br>Function _LoadLibraryFromResourceW(Instance: THandle; Name, ResType: PWideChar): hModule; stdcall;<br>Function _LoadLibraryFromResourceIDA(Instance: THandle; ResID: Integer; ResType: PAnsiChar): hModule; stdcall;<br>Function _LoadLibraryFromResourceIDW(Instance: THandle; ResID: Integer; ResType: PWideChar): hModule; stdcall;<br>Function _LoadLibraryMem(lpMemory: Pointer): hModule; stdcall;<br>Function _GetProcAddress(hModule: hModule; lpProcName: LPCSTR): Pointer; stdcall;<br>Procedure _FreeLibrary(hModule: hModule); stdcall;<br><br><br><br>示例代码<br><br>Uses<br> MemLibLoader;<br><br>Var<br> DllHandle: THandle;<br> MsgBox: Function(lpText, LpCaption: PAnsiChar): Integer; Stdcall;<br> MsgBoxEx: Function(lpText, LpCaption: PAnsiChar; UType: UINT): Integer; Stdcall;<br><br>Procedure TFrmMain.FormCreate(Sender: TObject);<br>Begin<br> Mem := TMemoryStream.Create;<br> Mem.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'MyDll.Dll');<br> DllHandle := _LoadLibraryMem(Mem.Memory);<br> If DllHandle <> 0 Then<br> Begin<br> @MsgBox := _GetProcAddress(DllHandle, 'MsgBox');<br> @MsgBoxEx := _GetProcAddress(DllHandle, MakeIntResource($1));<br> End;<br>End;<br><br>Procedure TFrmMain.FormClose(Sender: TObject; Var Action: TCloseAction);<br>Begin<br> _FreeLibrary(DllHandle);<br> Mem.Free;<br>End;<br><br>Procedure TFrmMain.Button1Click(Sender: TObject);<br>Begin<br> If @MsgBox <> Nil Then<br> MsgBox('这是按名称调用的函数', '提示');<br>End;<br><br>Procedure TFrmMain.Button2Click(Sender: TObject);<br>Begin<br> If @MsgBoxEx <> Nil Then<br> MsgBoxEx('这是按序号调用的函数', '提示', MB_ICONINFORMATION Or MB_OKCANCEL);<br>End;<br><br><br>网盘的下载地址:http://u.skygz.com/?skygz 产品目录下