Rul |
Отправлено: 26.11.2003, 15:52 |
|
Не зарегистрирован
|
как винда завершает работу приложения при завершении своей работы?
а проблема такая:
программы постоянно висит в памяти
нужно сохранить некоторые переменные в реестре при завершении работы виндовса.
|
|
Gedeon |
Отправлено: 26.11.2003, 17:19 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Тебе нужно ловить сообщение WM_QUERYENDSESSION которое форточки отправляют при закрытии себя.
|
|
** pasha |
Отправлено: 26.11.2003, 17:45 |
|
Не зарегистрирован
|
И потом какой Windows ? 98 — 2000
При завершении Windows закрывает все открытые формы.
При закрытии формы (окна) наступает его событие
onCloseQuery формы в котором можно и совершать
необходимые действия перед закрытием.
|
|
Gedeon |
Отправлено: 27.11.2003, 10:19 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Читайте Help господа, вот оттуда цитата, этот код пишет в раздел реестра на одиночный перезапуск проги после завершения ее при выключении винды:
QUOTE |
The following example shows how to tell Windows to relaunch your application when Windows starts up if it was running when the system shut down. When Windows starts up, it launches each application listed in the RunOnce key and then deletes the entry for that application. Therefore, you do not need to remove the entry written here.
void __fastcall TForm1::WMEndSession(TWMEndSession &Message)
{
TRegistry *Reg = new TRegistry;
try
{
Reg->RootKey = HKEY_CURRENT_USER;
if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true))
{
Reg->WriteString("MyApp","\"" + ParamStr(0) + "\"");
Reg->CloseKey();
}
}
__finally
{
delete Reg;
TForm1::WMEndSession(Message);
}
}
In order for this method to be called, it must be declared in your main form class as follows:
class PACKAGE TForm1 : public TForm
{
...
protected:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ENDSESSION, TWMEndSession, WMEndSession)
END_MESSAGE_MAP(TForm)
};
|
Да, правда две ошибки в Helpe, но тут они уже исправлены.
Отредактировано Gedeon — 27/11/2003, 12:33
|
|