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

Вниз

Программма закрывается, но shutdown прекращается :(   Найти похожие ветки 

 
fidget   (2002-04-05 15:09) [0]

Программка висит в трее(LMDTrayIcon), если Винде (w2k) делала restart или shutdown, то программа не закрывалась..
Посмотрела архивы форума, добавила 2 процедуры на WM_ENDSESSION и WM_QUERYENDSESSION - программа закрывается, но shutdown/restart приостанавливаются ... почему?


 
Song   (2002-04-05 15:16) [1]

Ошибка в 17-ой строке :))


 
Виктор Щербаков   (2002-04-05 15:21) [2]

WM_ENDSESSION и WM_QUERYENDSESSION не при чем. ОС должна завершать работу даже в том случае, если ты не обрабатываешь эти сообщения. Без кода (ну или хотя бы его каркаса) разговор получится как у Song © (05.04.02 15:16)


 
fidget   (2002-04-05 16:13) [3]

unit Proba;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, lmdcont, LMDCustomComponent, LMDWndProcComponent, LMDTrayIcon,
Menus, ImgList, ExtCtrls, OleCtrls, SHDocVw, Psock, NMHttp, ShellAPI;

type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Checknow1: TMenuItem;
Exit1: TMenuItem;
ImageList2: TImageList;
Timer1: TTimer;
NMHTTP1: TNMHTTP;
LMDImageListConnector1: TLMDImageListConnector;
LMDTrayIcon1: TLMDTrayIcon;
procedure FormCreate(Sender: TObject);
procedure LMDTrayIcon1DblClick(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Checknow1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
procedure NMHTTP1Failure(Cmd: CmdType);
procedure NMHTTP1Success(Cmd: CmdType);
protected
procedure QueryProcend(var Msg: TMessage); message WM_QUERYENDSESSION;
procedure Procend(var Msg: TMessage); message WM_ENDSESSION;
private
{ Private declarations }
procedure ApplicationMinimize(Sender: TObject);
procedure ApplicationRestore(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;
HTMLBody: string;
fClose: boolean;
fCreate: boolean;
counter: boolean;

implementation

uses BrProba;
{$R *.dfm}

procedure TForm1.QueryProcend(var Msg: TMessage);
begin
Msg.LParam:=ENDSESSION_LOGOFF;
Msg.Result:=1;
Close;
fShutDown:=false;
inherited;
end;

procedure TForm1.Procend(var Msg: TMessage);
begin
IF Msg.wParam=1 then begin
Close;
end;
inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.WindowState:=wsMaximized;
Application.OnMinimize:=ApplicationMinimize;
Application.OnRestore:=ApplicationRestore;
fClose:=false;
fCreate:=true;
counter:=false;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationMinimize(Sender: TObject);
begin
Timer1.Enabled:=true;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_RESTORE);
Application.BringToFront;
Timer1.Enabled:=false;
fClose:=false;
end;

procedure TForm1.LMDTrayIcon1DblClick(Sender: TObject);
begin
LMDTrayIcon1.Animated:=false;
LMDTrayIcon1.Icon:=Form1.Icon;
If counter=false then begin
Timer1.Enabled:=false;
Form2:=TForm2.Create(Form1);
counter:=true;
Form2.ShowModal;
Form2.Free;
counter:=false;
Timer1.Enabled:=true;
end
else Form2.WebBrowser.Navigate(" http://office.ensita.net/mysql/fs.html");
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
fClose:=true;
close;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
NMHTTP1.Get(" http://office.ensita.net/mysql/mysql.cgi?newmessages");
HTMLBody:=NMHTTP1.Body;
If Pos("NEWMESSAGES", HTMLBody)<> 0 then begin
LMDTrayIcon1.Animated:=true;
end
else LMDTrayIcon1.Animated:=false;
end;

procedure TForm1.Checknow1Click(Sender: TObject);
begin
NMHTTP1.Get(" http://office.ensita.net/mysql/mysql.cgi?newmessages");
HTMLBody:=NMHTTP1.Body;
If Pos("NEWMESSAGES", HTMLBody)<> 0 then begin
LMDTrayIcon1.Animated:=false;
LMDTrayIcon1.Icon:=Form1.Icon;
If counter=false then begin
Timer1.Enabled:=false;
Form2:=TForm2.Create(Form1);
counter:=true;
Form2.ShowModal;
Form2.Free;
counter:=false;
Timer1.Enabled:=true;
end
else Form2.WebBrowser.Navigate(" http://office.ensita.net/mysql/fs.html");
end
else LMDTrayIcon1.Animated:=false;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
if fCreate then begin
fCreate:=false;
Application.Minimize;
end;
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
fCreate:=true;
end;

procedure TForm1.NMHTTP1Failure(Cmd: CmdType);
begin
Timer1.Interval:=90000;
end;

procedure TForm1.NMHTTP1Success(Cmd: CmdType);
begin
Timer1.Interval:=15000;
end;
end.


 
Song   (2002-04-05 16:48) [4]

Вы используйте либо WM_QUERYENDSESSION либо WM_ENDSESSION. Оба нет смысла. И зачем Вы делаете и там Close и там Close?
Вероятно ошибка в том, что в WM_QUERYENDSESSION делается закрытие формы, потом система посылает WM_ENDSESSION с wParam=Msg.Result от WM_QUERYENDSESSION, т.е. 1 как и надо, но Вы опять пробуете закрывать форму в процедуре от WM_ENDSESSION, тут и должен возникать AV, который возможно и приводит к тому, что перезагрузка не происходит.
И ещё я не понимаю, зачем Вы делаете Msg.LParam:=ENDSESSION_LOGOFF? В хэлпе ясно ж сказано, что нужно только вернуть единицу, больше ничего модифицировать не надо.
Вот вообщем-то всё, других ошибок пока не вижу, однако на полноту исследования не претендую.


 
fidget   (2002-04-05 17:26) [5]

Пробовала использовать только одно ...
Если использую WM_QUERYENDSESSION , то результат тот же самый - программа закрывается, shutdown останавливается ...
Если использую WM_ENDSESSION, то даже программа не закрывается..
:(


 
Donal_Graeme   (2002-04-05 17:36) [6]

а совет про Close и LParam благополучно пропущен? :-)
к тому же вряд ли здесь нужен inherited :-)


 
fidget   (2002-04-05 19:36) [7]

> а совет про Close и LParam благополучно пропущен? :-)
а как вы думаете?
Нет не пропущен, но от этого ничего не изменилось...

> к тому же вряд ли здесь нужен inherited :-)
его отсутсвие тоже не влияет на выгрузку винды :(




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

Форум: "WinAPI";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-17813
MaXie
2002-05-16 13:27
2002.06.06
Реален ли вертикальный фильтр в SQL-запросе?


1-17884
Art-Support1
2002-05-21 22:44
2002.06.06
Кто может обьяснить как сделать программу(внутри),??


1-17860
heksus
2002-05-26 10:47
2002.06.06
Как строить графики в приложении.


1-17911
stupid
2002-05-27 16:01
2002.06.06
Реакция на срабатывание кнопки Enter в Memo компоненте...


1-18055
android
2002-05-25 13:28
2002.06.06
Непрямоугольная панель





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский