 Распаковка zip средствами WinXP.
    , zipfldr.dll
    Распаковка zip средствами WinXP.
    , zipfldr.dll
  |  | Наши проекты: Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту | |
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.107] | 
|   | 
 | 
 Правила раздела Visual C++ / MFC / WTL (далее Раздела)
    Правила раздела Visual C++ / MFC / WTL (далее Раздела)
   FAQ Раздела
 FAQ Раздела   Обновления для FAQ Раздела
 Обновления для FAQ Раздела    Поиск по Разделу
 Поиск по Разделу   MSDN Library Online
 MSDN Library Online Распаковка zip средствами WinXP.
    , zipfldr.dll
    Распаковка zip средствами WinXP.
    , zipfldr.dll
  | 
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         | |
|  |  В WinXP есть  zipfldr.dll, она судя по всему является COM сервером. Ни кто не знает как распаковывать с помощью её интерфейсов файлы ??   | 
| 
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         | |
|  | Цитата Jenya @  В WinXP есть  zipfldr.dll, она судя по всему является COM сервером. Ни кто не знает как распаковывать с помощью её интерфейсов файлы ?? В любом случае гораздо быстрее надёжнее проще и удобнее встроить распаковщик в своё приложение, нежели пытаться получить доступ к этому. | 
| 
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         | |
|  |  Я нашел описание здесь(http://www.autohotkey.com/forum/topic19831.html&highlight=zipfldr) однако не понятно  каким образом с помощью IID_IShellDispatch(у них IID_IShell) распаковываются файлы, такое ощущение, что архив рассматривается как папка проводника. | 
| 
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         | |
|  |  Отвечу сам себе :  Вот пример распаковки файла readme.txt из архива file.zip , если в системе зарегистрирован zipfldr.dll            OleInitialize(NULL);     char cInPath[]="c:\\file.zip\\readme.txt";         char cOutPath[]="c:\\13";     int nLen;     BSTR bstrZip,bstrFol;     HRESULT hres;      IShellDispatch *pSD = NULL;      Folder* pZipFolder = NULL;           Folder* pOutFolder = NULL;      hres=CoCreateInstance(CLSID_Shell, NULL, CLSCTX_SERVER,IID_IShellDispatch, (LPVOID *) &pSD);      if (SUCCEEDED(hres))      {          VARIANT vZipDir,vOutDir,vOptions;                    VariantInit(&vZipDir);          vZipDir.vt = VT_BSTR;          nLen = (lstrlen(cInPath) + 1) * sizeof(WCHAR);          bstrZip = SysAllocStringByteLen(NULL,nLen);          MultiByteToWideChar(CP_ACP,0,cInPath,-1,bstrZip,nLen);          vZipDir.bstrVal = bstrZip;          VariantInit(&vOutDir);          vOutDir.vt = VT_BSTR;          nLen = (lstrlen(cOutPath) + 1) * sizeof(WCHAR);          bstrFol = SysAllocStringByteLen(NULL, nLen);          MultiByteToWideChar(CP_ACP,0,cOutPath,-1,bstrFol,nLen);          vOutDir.bstrVal = bstrFol;          if (SUCCEEDED(pSD->NameSpace(vOutDir,&pOutFolder)))          {              //Опции               VariantInit(&vOptions);              vOptions.vt=VT_I4;              vOptions.lVal=0;              hres=pOutFolder->CopyHere(vZipDir,vOptions);               pOutFolder->Release();              VariantClear(&vOptions);          }          pSD->Release();          SysFreeString(bstrZip);          VariantClear(&vZipDir);          SysFreeString(bstrFol);          VariantClear(&vOutDir);      } | 
| 
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         | |
|  |  Вот здесь тоже есть ответ: https://www.cyberforum.ru/post6183877.html   | 
| 
         
         
          
           Сообщ.
           #6
          
          , 
          
         
         | |
|  |  Больше чем на 17 лет опоздали   | 
| 
         
         
          
           Сообщ.
           #7
          
          , 
          
         
         | |
|  | Цитата macomics @  Как говорится лучше поздно чем никогда   |