Как поймать ивент конца выполнения процесса?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Как поймать ивент конца выполнения процесса?

Сообщение xenomorph » 03.09.2004 (Пт) 17:56

Запускаю приложение Shell calc.exe \ CreateProcess \ WinExec,
как определить или процесс завершился через WaitForSingleObject\Process?

Огромное спасибо за кусок кода \ линк!

Н.Б. мониторинг окон\процессов просьба не предлагать - только АПИ!
Спасибо заранее!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 03.09.2004 (Пт) 18:15

Код: Выделить всё
Creating Processes
The CreateProcess function creates a new process, which runs independently of the creating process. However, for simplicity, the relationship is referred to as a parent-child relationship.

The following code fragment demonstrates how to create a process.

void main( VOID )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // Start the child process.
    if( !CreateProcess( NULL, // No module name (use command line).
        "MyChildProcess", // Command line.
        NULL,             // Process handle not inheritable.
        NULL,             // Thread handle not inheritable.
        FALSE,            // Set handle inheritance to FALSE.
        0,                // No creation flags.
        NULL,             // Use parent's environment block.
        NULL,             // Use parent's starting directory.
        &si,              // Pointer to STARTUPINFO structure.
        &pi )             // Pointer to PROCESS_INFORMATION structure.
    )
    {
        ErrorExit( "CreateProcess failed." );
    }

    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

Выдержка из MSDN по CreateProcess
Удачи!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.09.2004 (Пт) 18:38

Собственно, идея в том, что hProcess, вернувшийся из CreateProcess, передаётся WaitForSingleObject, - и всё...
Пример тебе уже дали.
Изображение

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Спасибо!

Сообщение xenomorph » 03.09.2004 (Пт) 19:11

Спасиба! Буду разгребать 8)!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

BuilderSoft
Постоялец
Постоялец
 
Сообщения: 350
Зарегистрирован: 21.09.2002 (Сб) 10:13

Сообщение BuilderSoft » 04.09.2004 (Сб) 9:08

Я решил эту проблему через сканируеш память

возвращаешь FALSE пока процес в памяти
Нет глупых,
Один узнал раньше других
אין א-אפשר

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 04.09.2004 (Сб) 9:44

Процесс в памяти - єто выход, как и окно ...
но не в этом случае ...

Что касаеться WaitForSingleObject - уже скодил ... но !!!
оно подмораживает код до окончания процесса ...

Вопрос:

Можно ли скодить каким либо образом (чисто на АПИ) без мониторинга окон\процессов именно асинхронный ивент - чтоб не тормозило выполнение кода?

Заранее спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.09.2004 (Сб) 10:09

Моно, моно... Поток создавай.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 04.09.2004 (Сб) 10:19

Ага - понял - затормозить поток этой фигнёй ... и оформить ивент!
СпАсИбО!!! - _Шаман_ 8)
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 24

    TopList