Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Программирование »   Pascal/Delphi »   Закрытие консольного приложения?
RSS
Реклама: не опоздай первоклассный керамзит на сайте.

Закрытие консольного приложения?

Как обработать это событие?

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модераторы: Winnowing_Raven, wsxПечать
 
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
Вопрос такой: как поймать и обработать в консольном приложении ситуацию, когда пользователь закрывает оконо с ним, чтобы корректно выполнить все деструкторы?

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Модератор раздела
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1084
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Не разу не сталкивался. Но могу предположить, что следует как то манипулировать через handle...

На досуге ещё подумаю...
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3031
Рейтинг пользователя: 75





Дата регистрации на форуме:
29 сен. 2001
Как выяснилось, нужно повесить функцию-обработчик с помощью SetConsoleCtrlHandler и ловить с ее помощью событие CTRL_CLOSE_EVENT.

Вот пример кода:

program Project2;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

function HandlerRoutine(dwCtrlType: cardinal): bool; stdcall;
  begin
    case dwCtrlType of
      CTRL_CLOSE_EVENT: begin
          if IDYES = MessageBox(0,'You are killing me','Why?',MB_YESNO)
          then Result:=false else Result:=true
      end;
      else Result:=false;
    end;//of case
  end;

begin
  SetConsoleCtrlHandler(@HandlerRoutine,true);
  Sleep(Infinite);
end.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Модератор раздела
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1084
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Гыгы..Я же говорил через хендлер...
прикольно :))
Только честно говоря, давно уже не разрабатываю консольные приложения. И не понимаю для чего их можно разрабатывать ?
<<Назад  Вперед>>Модераторы: Winnowing_Raven, wsxПечать
Объединенный Открытый Проект »   Программирование »   Pascal/Delphi »   Закрытие консольного приложения?
RSS
Быстрый переход в раздел:
Реклама: Стоматолог ортодонт. ортодонт, центр.


Время выполнения скрипта: 0.5595. Количество выполненных запросов: 18, время выполнения запросов 0.2105
Rambler's Top100