Re[3]: как узнать отработала ли внешняя программа??
От: Алексей Владимирович Миронов Россия  
Дата: 04.04.03 03:20
Оценка: 36 (3)
Здравствуйте, Starter, Вы писали:

S>Можно по подробнее, как использовать эту ShellExecuteEx

S>для моего примера

#include <windows.h>
#include <stdio.h>
#include <assert.h>

void main ( void )
{
    SHELLEXECUTEINFO se;
    DWORD rc, exitcode;

    ZeroMemory ( &se, sizeof (se) );
    se.cbSize = sizeof (se);
    se.fMask = SEE_MASK_NOCLOSEPROCESS;
    se.lpFile = "C:\\your_dir\\your_script.vbs"; 
    se.nShow = SW_SHOWNORMAL;
    if (!ShellExecuteEx (&se))
        printf ( "Someting screwed up!\n" );
    else
    {
        assert (se.hProcess);
        // Мы можем установить максимальное время выполнения
        rc = WaitForSingleObject ( se.hProcess, 5000 ); // Если тайм-аут не нужен, пишем INFINITE
        switch (rc)
        {
        case WAIT_TIMEOUT:
            TerminateProcess ( se.hProcess, 0 );
            printf ("Killed due timeout\n");
            break;
        case WAIT_OBJECT_0:
            GetExitCodeProcess ( se.hProcess, &exitcode );
            printf ( "Normal exit, code=%d\n", exitcode );
            break;
        default:
            printf ("Wait abandoned?\n"); 
        }
        CloseHandle (se.hProcess); // Для очистки совести
    }
}


Посмотрите также раздел Q&amp;A.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.