Используя дескриптор для сбора вывода из CreateProcess ()

Я использую CreateProcess () для выполнения внешнего консольного приложения в Windows из моего приложения GUI. Я хотел бы так или иначе собрать вывод, чтобы знать, были ли ошибки. Теперь я знаю, что должен сделать что-то с hStdOutput, но мне не удается понять что. Я плохо знаком с C++ и неопытным программистом, и я на самом деле не знаю, что сделать с дескриптором или как закурить трубку.

Как я получаю вывод к некоторой переменной (или файл)?

Это - то, что у меня есть момент:

void email::run(string path,string cmd){


    WCHAR * ppath=new(nothrow) WCHAR[path.length()*2];
    memset(ppath,' ',path.length()*2);
    WCHAR * pcmd= new(nothrow) WCHAR[cmd.length()*2];
    memset(pcmd,' ',cmd.length()*2);

    string tempstr;


    ToWCHAR(path,ppath);  //creates WCHAR from my std::string
    ToWCHAR(cmd,pcmd);

    STARTUPINFO info={sizeof(info)};
    info.dwFlags = STARTF_USESHOWWINDOW;    //hide process

    PROCESS_INFORMATION processInfo;

    if (CreateProcess(ppath,pcmd, NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo))
        {
        ::WaitForSingleObject(processInfo.hProcess, INFINITE);

        CloseHandle(processInfo.hProcess);
        CloseHandle(processInfo.hThread);
        }

    delete[](ppath);
    delete[](pcmd);
}

Этот код, вероятно, заставляет любого достойного программиста кричать, но (я не должен даже говорить это:) Это работает ;-)

Вопрос: Как я использую hStdOutput для чтения вывода в файл (например)?

11
задан Stef 20 April 2010 в 10:21
поделиться