Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Завершение работы ХР [D6, D7, WinXP]


Brat-2 ©   (2003-01-21 14:06:00) 

Ув. Мастера.
Прописываю в автозагрузку ХР программу.
По завершению работы, Виндоуз высвечивает, что программа неотвечает на запросы.
Как сделать, чтоб она закрывалась молча вместе с Виндой.


Stager   (2003-01-21 23:04:00) [1]

Есть следующее подозрение:

1. Ваша программа выполняет некий бесконечный цикл. Например:
procedure TForm1.FormCreate(Sender: TObject);
begin
repeat
Application.ProcessMessages;
Sleep(50);
{что-нибудь еще}
until False;

end;

По завершении работы система посылает ей команду на закрытие, но как же она закроется, когда из цикла нет выхода?

Вариант решения №1 (лень пробовать, но может сработать):
procedure TForm1.FormCreate(Sender: TObject);
begin
repeat
Application.ProcessMessages;
Sleep(50);
{что-нибудь еще}
until Application.Terminated;
end;


Вариант решения №2(чуть более "в лоб"):
var
TerminatePrg: boolean = False;

procedure TForm1.FormCreate(Sender: TObject);
begin
repeat
Application.ProcessMessages;
Sleep(50);
{что-нибудь еще}
until TerminatePrg;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := True;
TerminatePrg := True;
end;


Возможно, у Вас другой случай, но циклы все же поищите.

С уважением, Алексей.


Brat-2   (2003-01-21 17:51:00) [2]

2 ерор: нет, прога не "висит".
2 Смитсон: мне нужно, чтобы это все выполнялось автоматически.
2 RME: Как можно это осуществить?


Reindeer Moss Eater   (2003-01-21 14:42:00) [3]

Научи свою программу определять момент выгрузки ОС


Smithson   (2003-01-21 14:34:00) [4]

В твикерах windows поставь галочку "Автоматически закрывать программы" и уменьши тайм-ауты для этого события (по умолчанию 5 и 20 секунд). Какая точка в реестре этому соответствует - не знаю.


error 2k   (2003-01-21 14:30:00) [5]

Как мне кажется, если программа не отвечает на запросы - она висит. По идее, винда закрывает все проги сама.


Наверх

Титульная страница Поиск, карта сайта Написать письмо