各位老大,请教一个问题.如何写VC代码,让VC程序里面调用winzip或者是winrar软件.实现压缩文件,或者是解压缩文件.
例子:1.e:/vc/文件夹下有若干个txt文件.要求调用压缩程序,压缩成a.zip或者是a.rar文件,存储在e:/vc文件夹下;
2.在e:/vc文件夹下有a.zip或者是a.rar压缩文件,要求调用压缩程序,解压缩在e:/vc文件夹下.
请高手指教.谢谢!

解决方案 »

  1.   

    使用Xceedzip组件(用baidu查),程序片段如下:
    CoInitialize( NULL );
    try
    {
    IXceedZipPtr      piXceedZip( CLSID_XceedZip ); 
    long              xErr;    
    strDRZZIPFileName=strDRZZIPFileName.Mid(0,strDRZZIPFileName.Find(".",0))+".zip";

    piXceedZip->ZipFilename = strDRZZIPFileName.GetBuffer(strDRZZIPFileName.GetLength());
    if (strTargetFileName==""){
    strTargetFileName=strDRZFilePath;
    }
    CopyFile(strTargetFileName,strDRZFilePath,FALSE); 
    DeleteFile(strDRZFilePath);
    piXceedZip->FilesToProcess =strDRZFilePath;
    piXceedZip->PreservePaths = FALSE;
    xErr = piXceedZip->Zip();
    if ( xErr == 0 ) // xerSuccess
    {
    g_CurStateCode=5002;//压缩文件成功!!
    g_CurStateLog="压缩文件成功!!";
    }
    else
    {
    AfxMessageBox("压缩文件失败!");
    g_CurStateCode=-5002;//压缩文件失败!!
    CoUninitialize();
    g_CurStateLog="压缩文件失败!!";
    return -5002;//压缩文件失败!
    }
    }
    catch( const _com_error& xErr )
    {
    printf( "COM error %08x. %S\n", xErr.Error(), ( const char* )xErr.Description() );
    }
    catch( ... )
    {
    printf( "Unexpected error\n" );
    }
    CoUninitialize();