![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.07.2007
Сообщений: 18
|
![]()
Ничего не понимаю!
![]() Получаю код для выхода процесса. Передаю его в ExitProcess и моя прога закрывается. Попробовал TerminateProcess - всё нормально работает. Посмотрел что же за код передаётся в функцию. Оказалось, что для моей проги и для процесса, который хочу закрыть, код один и тот же. Делаю вывод, что т.к. код один, то сначала закрывается моё приложение, а до других очередь не доходит. Почему коды-то одни и те же? ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
А что ты хотел? ExitProcess завершает текущий процесс и больше ничего не делает! а код выхода нужен чтобы другая прога могла понять почему твой процесс завершился.
Поясни что ты хочешь от функции ExitProcess? |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 26.07.2007
Сообщений: 18
|
![]()
Ну в общем-то мне надо завершить процесс. Покопался в доках... Нашёл
TerminateProcess, а у него в описании сказано, что DLL он не выгружает и лучше пользоваться ExitProcess, что типа корректнее работает. А оказывается теперь, что она завершает текущий процесс. Если пользоваться TerminateProcess, то как же быть с DLL? ![]() |
![]() |
![]() |
![]() |
#4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
если юзаешь TerminateProcess уничтожается процесс и всё что с ним связано. Освобождается вся его память (если точнее, то она просто пропадает), а следовательно все загруженные им DLL-ки выгрузятся автоматически. Не уничтожатся только те объекты, которые ещё юзают другие процессы.
В общем, если копать глубоко, то TerminateProcess в итоге вызывает ExitProcess в целевом процессе. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.07.2007
Сообщений: 18
|
![]()
А, теперь понятно. Спасибо.
![]() |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]()
Dll'ки, если ничем больше не используются, выгрузятся из памяти, но DllMain не будет вызвана и dll'ка не выполнит завершающие операции.
В общем, для завершения чужого процесса - TerminateProcess, для завершения своей проги лучше стандартные функции - exit (c), halt (pascal). |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |
Проблема с gets() | TheWanderer | Общие вопросы C/C++ | 12 | 21.11.2008 14:35 |
Проблема | eldar | Работа с сетью в Delphi | 12 | 05.10.2008 18:10 |