Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.04;
Скачать: CL | DM;

Вниз

Завершение Windows   Найти похожие ветки 

 
Brand   (2002-02-11 23:41) [0]

А как сделать так, чтоб по завершению Windows, моя прога, которая висит в SysTray, сделала все что надо и завершилась.
Потому-что у меня прога загружается при автозагрузке в SysTray, и если я ее ни разу не вызываю, то все Ок, а если я ее хоть раз вызываю, винда не завершается, до тех пор, пока я не закрою свою прогу.
Всем спасибо.


 
Song ©   (2002-02-12 16:48) [1]

Я так думаю, что винды завершаю работу так: определяют кол-во задач, запущенных в системе и, перебирая их все по одной для каждой из них определяют PID процесса и завершают его, а это не что иное как посылка сообщения главной форме приложения, чтобы она сделала Close. По этому поставь все твои инструкции по завершению на onClose главной формы и всё будет работать. Или должно работать... :)))


 
Юрий Зотов (M) ©   (2002-02-12 16:57) [2]

См. WM_QUERYENDSESSION и WM_ENDSESSION. И проверьте, что у Вас происходит в обработчике OnCloseQuery, если такой есть.


 
Brand   (2002-02-12 23:45) [3]

А как работать с этими WM_.........?


 
Dimk   (2002-02-13 01:26) [4]

У формы создаешь метод
procedure ВсеРавноКакоеИмя
(var Message: TMessage); message WM_QUERYENDSESSION;
ну и она будет вызываться когда сообщение придет.
А еще прочитай по нему доку чтобы знать что там надо ответить на него. Это есть в win32.hlp что с делфями вместе приходит.


 
Brand   (2002-02-13 22:48) [5]

А можно конкретный отрывочек программы (процедуры)?


 
Dimk   (2002-02-14 00:40) [6]

// взял из соурсов - не про то сообщение но важна сама идея
// объявление класса
TCustomEdit = class(TWinControl)
private
FMaxLength: Integer;
FBorderStyle: TBorderStyle;
FPasswordChar: Char;
FReadOnly: Boolean;
......
procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;
procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure WMContextMenu(var Message: TWMContextMenu);
message WM_CONTEXTMENU;
......
end;

// теперь реализация одного из обработчиков сообщений
procedure TCustomEdit.WMSetFont(var Message: TWMSetFont);
begin
inherited;
if NewStyleControls and
(GetWindowLong(Handle, GWL_STYLE) and ES_MULTILINE = 0) then
SendMessage(Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, 0);
end;

Ну а тебе надо чтото там сохранить и тп. А потом Application.Terminate;

>Юрий Зотов (M) (12.02.02 16:57)
>См. WM_QUERYENDSESSION и WM_ENDSESSION. И проверьте, что у Вас >происходит в обработчике OnCloseQuery, если такой есть.

Если делал такой обработчик - то погляди что возвращается в CanClose. Чтобы окно закрылось - надо True;

// пример из доки
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin
if MessageDlg("Close the form?", mtConfirmation,
[mbOk, mbCancel], 0) = mrCancel then
CanClose := False;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.03.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
4-9344
ebeden
2002-01-06 05:32
2002.03.04
Win Api


3-9062
Rustik
2002-02-06 16:32
2002.03.04
Проблема с заполнением DBCombobox из модуля данных


6-9259
Yuri Btr
2001-12-18 10:36
2002.03.04
Тест порта


1-9159
Priz_Datiy
2002-02-13 17:06
2002.03.04
Загрузка информации из файла


3-9066
SGrigory
2002-02-06 14:07
2002.03.04
Ошибка в индексе Paradox