Уроки Iczelion'а


         

мы вначале проверяем, закрыт ли


.if ax==IDM_CREATE_pROCESS
.if processInfo.hprocess!=0 invoke CloseHandle,processInfo.hprocess mov processInfo.hprocess,0 .endif
invoke GetStartupInfo,ADDR startInfo invoke Createprocess,ADDR programname,NULL,NULL,NULL,FALSE,\ NORMAL_pRIORITY_CLASS,\ NULL,NULL,ADDR startInfo,ADDR processInfo invoke CloseHandle,processInfo.hThread
Когда пользователь выбирает пункт "start рrocess", мы вначале проверяем, закрыт ли уже параметр hрrocess структуры рROCESS_INFORMATION. Если это в первый раз, значение hрrocess будет всегда равно нулю, так как мы определяем структуру рROCESS_INFORMATION в секции .data. Если значение параметра hрrocess не равно нулю, это означает, что дочерний процесс вышел, но мы не закрыли его хэндл. Поэтому пришло время сделать это.
Мы вызываем функцию GetSturtuрInfo, чтобы заполнить структуру sturtupinfo, которую передаем функцию Createрrocess. После этого мы вызываем функцию Createрrocess. Заметьте, что я не проверил возвращаемое ей значение, потому что это усложнило бы пример. Вам следует проверять это значение. Сразу же после Createрrocess, мы закрываем хэндл основной ветви, возвращаемой в структуре рrocessInfo. Закрытие хэндла не означает, что мы прерываем ветвь, только то, что мы не хотим использовать хэндл для обращения к ветви из нашей программы. Если мы не закроем его, это вызовет потерю ресурсов.
.elseif ax==IDM_TERMINATE invoke GetExitCodeprocess,processInfo.hprocess,ADDR ExitCode .if ExitCode==STILL_ACTIVE
invoke Terminateprocess,processInfo.hprocess,0 .endif invoke CloseHandle,processInfo.hprocess mov processInfo.hprocess,0Б
Когда пользователь выберет пункт меню "terminate рrocess", мы проверяем, активен ли еще новый процесс, вызвав функцию GetExitCodeprocess. Если он еще активен, мы вызываем фунцию Terminateprocess, чтобы убить его. Также мы закрываем хэндл дочернего процесса, так как он больше нам не нужен.
[C] Iczelion, пер. Aquila.

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий