Текущий архив: 2006.02.05;
Скачать: CL | DM;
Вниз
как в консольном приложении отловить выход из Виндовс? Найти похожие ветки
← →
ga3 (2005-11-24 17:30) [0]сабж, пробовал создат тред в котором был такой код:
procedure Thread.Execute;
begin
while not Terminated do {nothing};
sysutils.Beep;
end;
нихрена не бибикает когда основной процесс грохаю\корректно закрываю
помогите плз
← →
BiN © (2005-11-24 18:03) [1]SetConsoleCtrlHandler
← →
ga3 (2005-11-24 18:15) [2]а для случая если консоль не показывается(из проекта удалена строка с директивой вывести консоль) можно примерчик?
← →
Leonid Troyanovsky © (2005-11-24 18:30) [3]
> ga3 (24.11.05 18:15) [2]
> а для случая если консоль не показывается(из проекта удалена
> строка с директивой вывести консоль) можно примерчик?
В этом случае, проект превращается в проект GUI приложения.
Сл-но, ему следует иметь окно, которое cможет получать
сообщения от системы, например, WM_QUERYENDSESSION.
Простым примером может послужить приложение с
единственной формой, которому можно сказать
Application.ShowMainForm := False.
--
Regards, LVT.
← →
ga3 (2005-11-24 18:41) [4]во блин
а как же тогда процесс узнает что ему надо прибиться? или винда тупо завершает все без предупреждения при выключении?
← →
Leonid Troyanovsky © (2005-11-24 18:49) [5]
> ga3 (24.11.05 18:41) [4]
> а как же тогда процесс узнает что ему надо прибиться? или
> винда тупо завершает все без предупреждения при выключении?
Консольный - [1], в обработчике (CtrlHandler)
GUI - [3], т.е., по получению сообщения.
--
Regards, LVT.
← →
ga3 (2005-11-24 19:20) [6]ок написал вот это:
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 );
так опять же не работает ничего:-(
напоминаю, что консоль НЕ показывается
← →
ga3 (2005-11-24 23:48) [7]никто не знает или это невозможно сделать?
← →
Германн © (2005-11-25 02:12) [8]
> напоминаю, что консоль НЕ показывается
>
Если имеется ввиду удаление директивы APPTYPECONSOLE, то какой тут CtrlHandler?
Ещё раз читай [3].
← →
sniknik © (2005-11-25 07:54) [9]> напоминаю, что консоль НЕ показывается //из проекта удалена строка с директивой вывести консоль
это уже не консоль, и тут хоть на голову встань, но ни одна консольная процедура работать не будет.
← →
sniknik © (2005-11-25 07:59) [10](если конечно создание консоли не взято на себя(AllocConsole)... но тогда бы она показывалась.)
Страницы: 1 вся ветка
Текущий архив: 2006.02.05;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.011 c