![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в консольном приложении отловить выход из Виндовс? [D6, WinXP]
ga3 © (2005-11-24 17:30:00)сабж, пробовал создат тред в котором был такой код:
procedure Thread.Execute;
begin
while not Terminated do {nothing};
sysutils.Beep;
end;
нихрена не бибикает когда основной процесс грохаю\корректно закрываю
помогите плз
sniknik (2005-11-25 07:59:00) [1](если конечно создание консоли не взято на себя(AllocConsole)... но тогда бы она показывалась.)
sniknik (2005-11-25 07:54:00) [2]> напоминаю, что консоль НЕ показывается //из проекта удалена строка с директивой вывести консоль
это уже не консоль, и тут хоть на голову встань, но ни одна консольная процедура работать не будет.
Германн (2005-11-25 02:12:00) [3]
> напоминаю, что консоль НЕ показывается
>
Если имеется ввиду удаление директивы APPTYPECONSOLE, то какой тут CtrlHandler?
Ещё раз читай [3].
ga3 (2005-11-24 23:48:00) [4]никто не знает или это невозможно сделать?
ga3 (2005-11-24 19:20:00) [5]ок написал вот это:
function Ctrl_Handler(Ctrl: Longint): LongBool;
begin
if Ctrl in [CTRL_SHUTDOWN_EVENT, CTRL_LOGOFF_EVENT] then
begin
assignfile(a,'qq.txt');
Rewrite(a);
write(a,'test');
end
else
begin
// пока ничео нету
end;
Result := true;
end;
и потом после begin
SetConsoleCtrlHandler(@Ctrl_Handler, TRUE );
так опять же не работает ничего:-(
напоминаю, что консоль НЕ показывается
Leonid Troyanovsky (2005-11-24 18:49:00) [6]
> ga3 (24.11.05 18:41) [4]
> а как же тогда процесс узнает что ему надо прибиться? или
> винда тупо завершает все без предупреждения при выключении?
Консольный - [1], в обработчике (CtrlHandler)
GUI - [3], т.е., по получению сообщения.
--
Regards, LVT.
ga3 (2005-11-24 18:41:00) [7]во блин
а как же тогда процесс узнает что ему надо прибиться? или винда тупо завершает все без предупреждения при выключении?
Leonid Troyanovsky (2005-11-24 18:30:00) [8]
> ga3 (24.11.05 18:15) [2]
> а для случая если консоль не показывается(из проекта удалена
> строка с директивой вывести консоль) можно примерчик?
В этом случае, проект превращается в проект GUI приложения.
Сл-но, ему следует иметь окно, которое cможет получать
сообщения от системы, например, WM_QUERYENDSESSION.
Простым примером может послужить приложение с
единственной формой, которому можно сказать
Application.ShowMainForm := False.
--
Regards, LVT.
ga3 (2005-11-24 18:15:00) [9]а для случая если консоль не показывается(из проекта удалена строка с директивой вывести консоль) можно примерчик?
BiN (2005-11-24 18:03:00) [10]SetConsoleCtrlHandler