//--------------------------------------------------------------------------- void __fastcall TForm1::UnZipFile(wchar_t *SourceFile, wchar_t *DestDir) { try { HRESULT hResult = S_FALSE; IShellDispatch *pIShellDispatch = NULL; Folder *pToFolder = NULL; VARIANT variantDir, variantFile, variantOpt; CoInitialize(NULL); hResult = CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pIShellDispatch); if (SUCCEEDED(hResult)) { VariantInit(&variantDir); variantDir.vt = VT_BSTR; variantDir.bstrVal = DestDir; hResult = pIShellDispatch->NameSpace(variantDir, &pToFolder); if (SUCCEEDED(hResult)) { Folder *pFromFolder = NULL; VariantInit(&variantFile); variantFile.vt = VT_BSTR; variantFile.bstrVal = SourceFile; pIShellDispatch->NameSpace(variantFile, &pFromFolder); FolderItems *fi = NULL; pFromFolder->Items(&fi); VariantInit(&variantOpt); variantOpt.vt = VT_I4; variantOpt.lVal = FOF_NO_UI; VARIANT newV; VariantInit(&newV); newV.vt = VT_DISPATCH; newV.pdispVal = fi; hResult = pToFolder->CopyHere(newV, variantOpt); Sleep(1000); pFromFolder->Release(); pToFolder->Release(); } pIShellDispatch->Release(); } CoUninitialize(); }catch(Exception &e){ Application->MessageBox(e.Message.c_str(), L"Błąd", MB_ICONERROR | MB_OK); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { UnZipFile(L"C:\\Test\\Plik.zip", L"C:\\Test"); } //---------------------------------------------------------------------------