Показать сообщение отдельно
Старый 03.02.2011, 06:38   #2  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
такой ещё вариант: я запаковывал файлы отчётов (PDF) в архив и отсылал клиенту в пакетной обработке.

использовал как архиватор Info-ZIP, он свободно распространяется и для частного и для бизнес-использования.

для запуска использовал System.Diagnostics.Process, потому что задолбался переписывать методы из WinApi толком в WinApiServer (AX 2009)

в классе это выглядело так:

X++:
void packPDF()
{
    str     zipExePath = "\"C:\\Program Files\\Info-ZIP\\zip.exe\"";
    str     parameters;
    str     quote = "\"";

    System.Diagnostics.Process  processZIP;

    str enquote(str _parm)
    {
        _parm = quote + _parm + quote;
        return _parm;
    }
    ;    

    parameters = "";
    parameters += "-j ";                // do not create folder node
    parameters += "-9 ";                // mid level of packing
    parameters += "-m ";                // move to archive (delete after packing)

    parameters += enquote(zipFile) + " ";        // new zip file name

    parameters += enquote(folderPath + "*.pdf"); // all pdf files please

    new InteropPermission(InteropKind::ClrInterop).assert();

    processZIP = System.Diagnostics.Process::Start(zipExePath, parameters);
    processZIP.WaitForExit();

    CodeAccessPermission::revertAssert();
}
после WaitForExit() у процесса можно и спросить, с каким кодом он там завершился, насколько я помню, давно делал.
__________________
our sharp bitter vitriol is not that of the vulgar.
За это сообщение автора поблагодарили:  (2).