loadlibrary
GetProcAddress
FreeLibrary怎么 动态调用cabinet.dll呢,最好有例子?cabinet里我要用到FCI包括5个API。
FCICreate 创建 FCI context
FCIAddFile 向 cabinet 中添加文件
FCIFlushCabinet 结束当前的 cabinet
FCIFlushFolder 结束当前的folder 并建立新的 folder
FCIDestroy 销毁 FCI context
FDI包括4个API。
FDICreate 创建 FDI context
FDIIsCabinet 判断是否为CAB压缩文件,是则返回其属性
FDICopy 解压
FDIDestroy 销毁 FDI context我改怎么处理呢谢谢各位大侠
GetProcAddress
FreeLibrary怎么 动态调用cabinet.dll呢,最好有例子?cabinet里我要用到FCI包括5个API。
FCICreate 创建 FCI context
FCIAddFile 向 cabinet 中添加文件
FCIFlushCabinet 结束当前的 cabinet
FCIFlushFolder 结束当前的folder 并建立新的 folder
FCIDestroy 销毁 FCI context
FDI包括4个API。
FDICreate 创建 FDI context
FDIIsCabinet 判断是否为CAB压缩文件,是则返回其属性
FDICopy 解压
FDIDestroy 销毁 FDI context我改怎么处理呢谢谢各位大侠
GetProcAddress 取得的api:;eg. MessageBoxA_MessageBoxA typedef proto dword;dword;dword;dword
lpMessageBoxA typedef ptr _MessageBoxAMessageBoxA lpMessageBoxA ?
if(hDllInst!=NULL)
{
HOOKPROC pHookFunction = (HOOKPROC)::GetProcAddress(hDllInst,"HookFunction");
if(pHookFunction!=NULL)
{
hhkKey = ::SetWindowsHookEx(WH_CBT, pHookFunction, hDllInst, 0);
}
::FreeLibrary(hDllInst);
}
else
AfxMessageBox("LoadLibrary error!");
这个是一个直接调用dll中函数HookFunction的例子,可以参考一下.
HINSTANCE hInst; //句柄
hInst=LoadLibrary("cabinet.dll"); //加载你提供的DLL
typedef int (/*_stdcall*/ *ADDPROC)(int a,int b); //定义一个指针,后跟参数,我这是
// 瞎写的,你到时用什么,就写什么.
//ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"这里写上你要导出的函数名");
//这是直接用法.
ADDPROC Add=(ADDPROC)GetProcAddress(hInst,MAKEINTRESOURCE(1));//这个数字"1"是函数在
//DLL的序号,
//这是间接用法.//调用:Add(1,2);//把相应的参数传进去就行了.这里没有用反回值,所以没判断.FreeLibrary(hInst);//这个是卸载DLL