请问怎么在程序非法退出时执行一个事件???(50分)

  • 主题发起人 主题发起人 bjicfan
  • 开始时间 开始时间
B

bjicfan

Unregistered / Unconfirmed
GUEST, unregistred user!
try
---
except
你的事件
exit
end
 
可能理解错了,我是说在程序被外部程序终止时执行的事件。
 
我的设想是你用另一个程序B调用这个程序A并一直等待A的终止
如果A正常终止,B可以得到一个A发出的消息正常退出
如果A被强制退出,B没有得到消息,则处理相关事件.
A只能由B来调用才能执行
这样,可能符合你的需求。
 
在form的onclosequery事件中写入你要执行的事件;
 
应该写在form.OnDestroy里面
 
有的时候程序死了,就是onDestroy事件都不起作用!
 
bubble说的对.
 
Procedure OnError(...);
Begin
{do your Event}
End;
Initialization
Application.Exception := OnError;
End;
 
在这个Application运行前再运行一个程序,当死了后,
Application可以检测出窗口消失,在做相应的动作。
 
可以另外写一个当前程序的守护程序(进程),用WINDOWS的消息机制来实现异常捕获,然后触发你需要的行为。
 
public
procedure AppException(Sender: TObject; E: Exception);
...
procedure TForm1.AppException(Sender: TObject; E: Exception);
{错误陷阱}
var
sMsg : string;
begin
sMsg := '你死定了,乱搞破坏!';
ShowMessage(sMsg);
{在这里做你想做的事情}
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException; //设置错误陷阱
...
end;
 
public
procedure ABC_EXIT(M:TMessage) WM_EXIT; //截取EXIT消息
...
procedure TForm1.ABC_EXIT(M:TMessage) ;//响应EXIT消息
begin
ShowMessage('你死定了,乱搞破坏!');
//enter your code
application.te....... //程序退出,否则........
end;

 
在OnCloseQuery中寫就好了
 
后退
顶部