Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.028 c
3-1133950998
dtm
2005-12-07 13:23
2006.02.05
collation error pages from 1251 to 1252 на SQL Server


2-1137759600
Crass
2006-01-20 15:20
2006.02.05
Размер формы постоянный при смене рассширения экрана - КАК?


2-1137578934
JIurafsdf
2006-01-18 13:08
2006.02.05
Как отследить в поле число или нет?


1-1135919649
markers
2005-12-30 08:14
2006.02.05
Отправка текста на E-mail


3-1133462062
Сергей А.
2005-12-01 21:34
2006.02.05
Как поймать ошибку при загрузке данных из таблицы?