Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Отследить завершение работы программы


Автор: NikoLLa 22.1.2006, 19:59
Есть такая тема: мне необходимо написать прогу, которая бы выключала компьютер в тот момент когда завершается работа другой программы(допустим "Word"). Прогу выключения компа я уже написал, а вот по завершению работы Word чтоб выключала - не знаю как писать.
Т.е. должно происходить следующее: я запускаю Word, работаю в нем, потом закрываю его, а компьютер сразу же выключается.
Заранее, всем огромное спасибо!!!!

Автор: Fin 22.1.2006, 20:10
С помошью CreateProcess запускаеш сторонию программу. Получаеш Хэндл процесса. Затем вешаеш свой поток в спячку через функцию WaitForSingleObject. Объектом данной функции будет Хэндл сторонего процесса.
Как только твой поток проснулся, можеш выключать компьютер.
Добавлено @ 20:13
Вот код на С++ из книги Рихтера
Цитата

Если Вы хотите создать новый процесс, заставить его выполнить какис-либо операции и дождаться их результатов, напишите примерно такой код

Код

PROCESS_INFORMATION pi; 
DWORD dwExitCode; 

// порождаем дочерний процесс
BOOL fSuccess = CreateProcess(..., &pi}; 

if (fSuccess) { 

// закрывайте описатель потока, как только необходимость в нем отпадает! 
CloseHandle(pi.hThread);


// приостанавливаем выполнение родительского процесса, 
// пока не завершится дочерний процесс 
WaitForSingleObject(pi.hProcess, INFINlTI);

// дочерний процесс завершился; получаем код его завершения 
GetExitCodeProcess(pi.hProcess, &dwExitCode); 

// закрывайте описатель процесса, как только необходимость в нем отпадает! 
CloseHandle(pi.hProcess);

} 

Автор: NikoLLa 23.1.2006, 14:38
Веселый код smile . Только непонятный. Я в Си++ не ас. Если не трудно поясни, пожалуйста этот красивый код, куда его вставить и что потом сделать. И небольшая просьба: поясни это огромное колличество умных слов.

Автор: Exception 23.1.2006, 15:19
Код
Sub Form_Load
Dim pid As Long, hProc As Long
pid = Shell("c:\word.exe")
hProc = OpenProcess(SYNCHRONIZE, 0, pid)
WaitForSingleObject hProc, INFINITE
CloseHandle hProc
MsgBox "Ready!"
End Sub
Описание констант и функций бери из API Viewer'a

Автор: Akina 23.1.2006, 17:05
Гм... а запусти это приложение скриптом, и в скрипте после завершения приложения запусти прогу выключения.

Автор: Exception 23.1.2006, 17:16
Мой способ проще )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)