Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Вниз

как в консольном приложении отловить выход из Виндовс?   Найти похожие ветки 

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
15-1137169687
Spectre_s
2006-01-13 19:28
2006.02.05
Декомпилятор для Delphi


8-1124999139
inf-8
2005-08-25 23:45
2006.02.05
Mediaplayer


10-1112877637
eugene32
2005-04-07 16:40
2006.02.05
Поиск в Word e


4-1132604570
tamroF
2005-11-21 23:22
2006.02.05
Юзеры в XP


2-1137435882
Navi
2006-01-16 21:24
2006.02.05
Ошибка удаления записи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский