Re: Вопрос по запуску DOS-приложения из Windows-приложения
От: retalik www.airbandits.com/
Дата: 30.09.02 07:37
Оценка: 3 (1)
Здравствуйте balder, Вы писали:

B>Возникла такая проблема, что необходимо запускать подряд несколько дос-утилит из под win-интерфейса, причем если использовать функцию WinExec или ShelExecute то нет возможности дождаться завершения дос-утилиты перед запуском следующей (что очень необходимо), а если использовать spawnlp, то появляющийся экран доса , который надо постоянно закрывать, сильно все портит.

B>Может кто знает, как еще можно запуск осущесвтлять, или может я чего-то в этих функциях не допонял? Помогите плз!
Насчет "закрытия экрана доса" — похоже, у твоего приложения так настроены установки ярлыка (или вообще нет ярлыка).
А насчет дождаться — это пожалуйста:
void Execute(LPCSTR pathName, LPCSTR params, BOOL bWait)
{
    STARTUPINFO si;
    ZeroMemory(&si, sizeof si);
    si.cb = sizeof si;
    PROCESS_INFORMATION pi;
    CString quote='"';
    CString cmd=quote+pathName+quote+" "+params;
    BOOL bResult=CreateProcess(0, cmd.LockBuffer(), 0, 0, TRUE, 0, 0, 0, &si, &pi );
    _ASSERTE(bResult);
    if(bResult && bWait)
    {
        while(WaitForSingleObject(pi.hProcess, 100)==WAIT_TIMEOUT)        
        {
            MessagePump();
        }
    }
    cmd.UnlockBuffer();
}


PS: тут возня с CString от MFC/WTL для того, чтобы в CreateProcess передавать неконстантную строку lpCommandName. Кроме того, путь заключается в кавычки (чтобы пробелы в пути не воспринимались как параметры).
Успехов,
Виталий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.