想写一个压缩解压缩的小程序,用到动态调用cabinet.dll,FCI,FDI。向各位大侠请教动态调用cabinet.dll的方法?

pantung 2006-11-30 07:45:16
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

我改怎么处理呢

谢谢各位大侠
...全文
344 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
pantung 2006-12-20
  • 打赏
  • 举报
回复
感谢各位,我已经解决了

只用到系统自带的cabinet.dll。

很感谢各位的帮助,谢谢。
pantung 2006-12-15
  • 打赏
  • 举报
回复
to jinandb2() 谢谢你

opanpan@gmail.com

macnab 2006-12-15
  • 打赏
  • 举报
回复
这样就行了,只要把下面该换的,换成你的就行了.
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
jinandb2 2006-12-15
  • 打赏
  • 举报
回复
没有类,很简单.如果要的话,留个 e_mail .
0011411 2006-12-15
  • 打赏
  • 举报
回复
HINSTANCE hDllInst = ::LoadLibrary("Stic.dll");
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的例子,可以参考一下.
jinandb2 2006-12-15
  • 打赏
  • 举报
回复
你是不是误会我的意思了,我是说,你有了 .lib 和 .h 文件, 不必要 .DLL 库,即可写好一个压缩程序.压缩功能已经进入 .exe 文件中,非常完美. 即使你发布你的程序,也不必要带上 .dll ,.
pantung 2006-12-14
  • 打赏
  • 举报
回复
to jinandb2()

谢谢你

我的意思是利用windows自带的cabinet.dll写一个压缩程序

不用类 只用那九个接口函数

不用类我该怎么写?

开始对自己失望了
jinandb2 2006-12-14
  • 打赏
  • 举报
回复
嘿嘿,正好我有 .lib & .h 文件,不需要那个讨厌的 DLL 文件.如果需要的话,回个话.
pantung 2006-12-13
  • 打赏
  • 举报
回复
谢谢大家

我的意思是 不用类 只用接口函数

请大家指教
panl82 2006-12-04
  • 打赏
  • 举报
回复
http://www.codeproject.com/cs/files/CABCompressExtract.asp
blastzgd 2006-12-02
  • 打赏
  • 举报
回复
最佳途径:OllyDBG.顺便顶二楼.
LiChenYue 2006-12-02
  • 打赏
  • 举报
回复
关注,顺便蹭点分。
大熊猫侯佩 2006-12-01
  • 打赏
  • 举报
回复
是。GetProcAddress 要取得任何要使用到的api,在汇编中我一般用如下方式定义
GetProcAddress 取得的api:

;eg. MessageBoxA

_MessageBoxA typedef proto dword;dword;dword;dword
lpMessageBoxA typedef ptr _MessageBoxA

MessageBoxA lpMessageBoxA ?
pantung 2006-12-01
  • 打赏
  • 举报
回复
to mydo:谢谢你,cabinet.dll这个文件2000系统以上自带了。主要提供了,压缩和解压缩的API。我现在想动态调用cabinet.all,因为这样写出的压缩解压缩程序会小些。

loadlibrary后,GetProcAddress该怎么做?是不是要GetProcAddress每个API?

谢谢大侠不耐其烦的指教。
大熊猫侯佩 2006-11-30
  • 打赏
  • 举报
回复
没有任何说明么?

1 使用 ollydbg for dll推测函数参数个数

2 使用 ollydbg dasm 推测参数用途
\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib 的目录 2009-09-06 16:17 . 2009-09-06 16:17 .. 2006-03-03 23:19 13,712 Bits.Lib 2006-03-03 23:19 4,196 credui.lib 2006-03-03 23:19 57,730 daouuid.lib 2006-03-03 23:19 527,310 ddao35.lib 2006-03-03 23:19 531,012 ddao35d.lib 2006-03-03 23:19 528,038 ddao35u.lib 2006-03-03 23:19 532,702 ddao35ud.lib 2006-03-03 23:19 14,610 WinFax.Lib 2006-03-03 23:19 206,996 GdiPlus.lib 2006-03-03 23:20 27,500 HelpCenterInterfaces.tlb 2006-03-03 23:20 64,608 HelpServiceInterfaces.tlb 2006-03-03 23:21 13,252 p2p.lib 2006-03-03 23:21 11,218 p2pgraph.lib 2006-03-03 23:21 1,380,352 atlsd.pdb 2006-03-03 23:23 121,974 WiaGuid.Lib 2006-03-03 23:23 19,212 WiaScr.Tlb 2006-03-03 23:23 10,152 esebcli2.lib 2006-03-03 23:23 129,732 cdoex.tlb 2006-03-03 23:23 26,608 cdoexm.tlb 2006-03-03 23:23 10,832 exevtsnk.tlb 2006-03-03 23:23 7,888 ActiveDS.Lib 2006-03-03 23:23 99,122 ADSIid.Lib 2006-03-03 23:23 53,222 Wldap32.Lib 2006-03-03 23:23 55,600 CDOSys.Tlb 2006-03-03 23:23 6,254 certadm.lib 2006-03-03 23:23 217,676 certidl.lib 2006-03-03 23:23 59,044 Crypt32.Lib 2006-03-03 23:23 5,516 ComSvcs.Lib 2006-03-03 23:23 75,386 DtcHelp.Lib 2006-03-03 23:23 2,106 Mtx.Lib 2006-03-03 23:23 1,734 mtxdm.lib 2006-03-03 23:23 121,030 Svcguid.Lib 2006-03-03 23:23 63,400 xaSwitch.Lib 2006-03-03 23:23 3,364 xoleHlp.Lib 2006-03-03 23:23 6,402 Icm32.Lib 2006-03-03 23:23 1,978 Icmui.Lib 2006-03-03 23:23 17,036 Mscms.Lib 2006-03-03 23:23 620,890 MMC.Lib 2006-03-03 23:23

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧