Существует ли событие Delphi, которое гарантированно будет вызвано, когда приложение завершится, но до уничтожения любых форм? - PullRequest
8 голосов
/ 11 октября 2011

Я использую Delphi 6 Pro. Мне нужно событие, которое сработает, когда мое приложение определенно закрывается, но до уничтожения любых форм. Я думал о перехвате сообщений WM_QUIT в основной форме WndProc (), но это не сработало, потому что формы начали разрушаться до того, как я увидел сообщение WM_QUIT. Мне было интересно, есть ли стандартное событие Delphi, которое я могу использовать для выполнения кода в этой точке цепочки событий завершения работы? Я не могу использовать событие FormClose () основной формы, поскольку оно не гарантированно вызывается, а событие FormDestroy () слишком поздно. Есть идеи?

Ответы [ 2 ]

14 голосов
/ 11 октября 2011

Вы не увидите прибытия сообщения WM_QUIT в методе WndProc(), поскольку WM_QUIT является сигналом для прекращения работы циклов обработки сообщений, и поэтому обычно не отправляется оконной процедуре.

Нет конкретного события для того, что вы просите.Однако вы можете открыть файл .dpr вашего проекта и поместить любой код, который вам нужен, после завершения вызова Application.Run.Цикл сообщений больше не работает, но объекты Application и MainForm еще не освобождены.

8 голосов
/ 11 октября 2011

Лучший способ сделать это (а я потратил много времени на это на протяжении многих лет) - это подключить процедуру через процедуру AddTerminateProc () в SysUtils.pas.Это работает каждый раз, и я использую его годами (если вы не убили процесс с помощью диспетчера задач).

...