WINDOWS推出时会向每个程序发送WM_QUERYENDSESSION消息
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private
{ Private declarations }
procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION;
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginend;procedure TForm1.winexit(var msg: Tmessage);
begin
showmessage('关机了!');
end;
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private
{ Private declarations }
procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION;
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginend;procedure TForm1.winexit(var msg: Tmessage);
begin
showmessage('关机了!');
end;
谢谢你的解答第一个问题能解决吗?
呵呵
那这样的话就很麻烦了啊?to : softwing(向前看)
procedure winexit(var msg:Tmessage);这个过程的主要功能是什么呢?
判断关机?
那么返回值怎样,代表什么意思?
能说详细一点吗?
2、同意softwing(向前看) ;我的问题:Tnmudp这个控件在win2000下发送和接收信息都没问题,但是在win98下,就有问题了:就是在判断客户端程序是否被杀死时,服务端发出信息后,就接受不到客户端的信息了。不知道是不是Tnmudp的一个BUG。该怎么解决呢,还请各位大虾不吝赐教。
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private
{ Private declarations }
procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION;
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginend;procedure TForm1.winexit(var msg: Tmessage);
begin
showmessage('关机了!');
end;
一般这类程序在运行时,当进行关机操作,其它程序都被关掉了,只有它们不为所动。所以必须对关机消息进行处理。procedure exitwin(var msg:TWMQUERYENDSESSION);message WM_QUERYENDSESSION;
procedure TServer.exitwin(var msg: TWMQUERYENDSESSION);
begin
inherited;
server.Close;
end;用这样的好象比较简单
那么再procedure TServer.FormDestroy(Sender: TObject);
var
reg:Tregistry;
s:string;
begin
s:=application.ExeName;
reg:=Tregistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices',True);
Reg.WriteString(...);
reg.free;
end;
我每阁多长时间向客户端发送一消息,客户端收到消息后,比如显示个messagebox,如果中断,则断开