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.
как узнать отработала ли внешняя программа??
От: Starter  
Дата: 04.04.03 01:22
Оценка:
Программа запускает vbscript используя функцию
ShellExecute(NULL, NULL, vbsfile, NULL, NULL, SW_SHOWNORMAL);
Как мне узнать, когда он отработает, чтобы удалить его?

04.04.03 08:10: Перенесено из 'C/C++'
Re: как узнать отработала ли внешняя программа??
От: Алексей Владимирович Миронов Россия  
Дата: 04.04.03 01:51
Оценка:
Здравствуйте, Starter, Вы писали:

S>Программа запускает vbscript используя функцию

S>ShellExecute(NULL, NULL, vbsfile, NULL, NULL, SW_SHOWNORMAL);
S>Как мне узнать, когда он отработает, чтобы удалить его?

По-моему, лучше вместо ShellExecute использовать ShellExecuteEx. Эта функция предоставляет HANDLE процесса, который можно использовать в WaitForSingleObject или периодически дергать GetExitCodeProcess.
Re[2]: как узнать отработала ли внешняя программа??
От: Starter  
Дата: 04.04.03 01:59
Оценка:
Здравствуйте, Алексей Владимирович Миронов, Вы писали:

АВМ>Здравствуйте, Starter, Вы писали:


S>>Программа запускает vbscript используя функцию

S>>ShellExecute(NULL, NULL, vbsfile, NULL, NULL, SW_SHOWNORMAL);
S>>Как мне узнать, когда он отработает, чтобы удалить его?

АВМ>По-моему, лучше вместо ShellExecute использовать ShellExecuteEx. Эта функция предоставляет HANDLE процесса, который можно использовать в WaitForSingleObject или периодически дергать GetExitCodeProcess.


Спасибо за помошь.
Можно по подробнее, как использовать эту ShellExecuteEx
для моего примера
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.