Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];

Вниз

Завершение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
4-9335
Slyer
2002-01-04 00:47
2002.03.04
Как пользоваться lParam при WH_KeyBoard.


1-9161
vic_774N
2002-02-13 20:51
2002.03.04
как получить интерфейс IUnknown


3-9094
Дремучий
2002-02-06 13:42
2002.03.04
Как закрыть незакрытую сессию?


7-9317
DenKop
2001-11-26 21:20
2002.03.04
Рабочий стол.


4-9322
cad
2002-01-03 12:59
2002.03.04
Имя пользователя windows





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский