请问,如何打开 '.rar' 文件?

strongtiger 2000-08-14 05:51:00
...全文
463 11 打赏 收藏 转发到动态 举报
写回复
用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,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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