社区
资源
帖子详情
请问,如何打开 '.rar' 文件?
strongtiger
2000-08-14 05:51:00
...全文
506
11
打赏
收藏
请问,如何打开 '.rar' 文件?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SCORPIONS
2001-05-21
打赏
举报
回复
下载一个winrar
starwalker
2001-05-20
打赏
举报
回复
WINZIP也可以的
panch
2001-05-04
打赏
举报
回复
用WINRAR吧。
jimgreen
2001-03-07
打赏
举报
回复
用这些东西干吗,用个windows commander 不就全解决了吗?
vbdabster
2001-02-03
打赏
举报
回复
用winrar就可以了,呵呵
SkyNet
2001-02-02
打赏
举报
回复
同意FireAngel观点
Icebird
2000-10-17
打赏
举报
回复
Windows下使用WinRAR(有汉化版),操作与WinZip类似.
DOS下用RAR解压,可用图形界面,也可用rar x <Archive> <Path>
或用RAR里的UNRAR解压.
土豆
2000-10-15
打赏
举报
回复
如果要解开,当然使用RAR或WinRAR啦,如果要编程解开,可以调用WINRAR的动态连接库:
下面是封装的一个类,拿去用用吧:
//UnRar.h
//RAR文件解压缩头文件
//---------------------------------------------------------------------------
#ifndef _UNRAR_H
#define _UNRAR_H
//---------------------------------------------------------------------------
#define RAR_OM_LIST 0
#define RAR_OM_EXTRACT 1
#define RAR_SKIP 0
#define RAR_TEST 1
#define RAR_EXTRACT 2
#define RAR_VOL_ASK 0
#define RAR_VOL_NOTIFY 1
#include <windows.h>
//---------------------------------------------------------------------------
struct RARHeaderData
{
char ArcName[260];
char FileName[260];
UINT Flags;
UINT PackSize;
UINT UnpSize;
UINT HostOS;
UINT FileCRC;
UINT FileTime;
UINT UnpVer;
UINT Method;
UINT FileAttr;
char *CmtBuf;
UINT CmtBufSize;
UINT CmtSize;
UINT CmtState;
};
//---------------------------------------------------------------------------
struct RAROpenArchiveData
{
char *ArcName;
UINT OpenMode;
UINT OpenResult;
char *CmtBuf;
UINT CmtBufSize;
UINT CmtSize;
UINT CmtState;
};
//---------------------------------------------------------------------------
class CUnRar
{
private: // User declarations
HINSTANCE UnRarDll;
HANDLE hArcData;
int RHCode,PFCode;
char CmtBuf[262144];
RARHeaderData HeaderData;
RAROpenArchiveData OpenArchiveData;
HANDLE (*RAROpenArchive) (RAROpenArchiveData *ArchiveData);
int (__stdcall *RARCloseArchive) (HANDLE hArcData);
int (__stdcall *RARReadHeader) (HANDLE hArcData,RARHeaderData *HeaderData);
int (__stdcall *RARProcessFile) (HANDLE hArcData,int Operation,char *DestPath,char *DestName);
void (__stdcall *RARSetChangeVolProc) (HANDLE hArcData,int (*ChangeVolProc)(char *ArcName,int Mode));
void (__stdcall *RARSetProcessDataProc) (HANDLE hArcData,int (*ProcessDataProc)(unsigned char *Addr,int Size));
void (__stdcall *RARSetPassword) (HANDLE hArcData,char *Password);
public: // User declarations
CUnRar(const char *DllFileName);
~CUnRar(void);
void Free(void);
void UnRar(const char *RarFileName,const char *ExtractPath=NULL);
};
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
//UnRar.cpp
#include "UnRar.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
CUnRar::CUnRar(const char *DllFileName)
{
int (__stdcall *proc)();
UnRarDll=LoadLibrary(DllFileName);
proc=GetProcAddress(UnRarDll,"RAROpenArchive");
(void*)RAROpenArchive=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARCloseArchive");
(void*)RARCloseArchive=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARReadHeader");
(void*)RARReadHeader=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARProcessFile");
(void*)RARProcessFile=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARSetChangeVolProc");
(void*)RARSetChangeVolProc=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARSetProcessDataProc");
(void*)RARSetProcessDataProc=(void*)proc;
proc=GetProcAddress(UnRarDll,"RARSetPassword");
(void*)RARSetPassword=(void*)proc;
}
//---------------------------------------------------------------------------
CUnRar::~CUnRar(void)
{
if(UnRarDll)
FreeLibrary(UnRarDll);
}
//---------------------------------------------------------------------------
void CUnRar::Free(void)
{
FreeLibrary(UnRarDll);
UnRarDll=NULL;
}
//---------------------------------------------------------------------------
void CUnRar::UnRar(const char *RarFileName,const char *ExtractPath)
{
char *p;
char FileName[256];
char ExtraPath[256];
strcpy(FileName,RarFileName);
if(ExtractPath)
strcpy(ExtraPath,ExtractPath);
else
{
strcpy(ExtraPath,RarFileName);
p=ExtraPath;
while(*(++p)!=0);
while(*(--p)!=92);
*p=0;
}
OpenArchiveData.ArcName=FileName;
OpenArchiveData.CmtBuf=CmtBuf;
OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
OpenArchiveData.OpenMode=RAR_OM_EXTRACT;
hArcData=RAROpenArchive(&OpenArchiveData);
HeaderData.CmtBuf=NULL;
while ((RHCode=RARReadHeader(hArcData,&HeaderData))==0)
{
PFCode=RARProcessFile(hArcData,2,ExtraPath,NULL);
}
RARCloseArchive(hArcData);
}
//---------------------------------------------------------------------------
The_east_key
2000-09-15
打赏
举报
回复
dos下:
rar x test.rar
topwebmaster
2000-09-12
打赏
举报
回复
www.soft999.com 有下载的
Firing_Sky
2000-08-14
打赏
举报
回复
用Winrar来解压
资源
2,585
社区成员
18,436
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章