C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
завершение работы приложения
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

Вернуться в Вопросы программирования в C++Builder