Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

版权申明
查看: 5680|回复: 0

求助: System.SysSetCtrlBreakHandler()

[复制链接]

该用户从未签到

发表于 2009-6-19 13:43:51 | 显示全部楼层 |阅读模式
我想利用 SysSetCtrlBreakHandler() 注册一个 Ctrl-Break handler,这样在程序被终止之前释放一些资源。
但是下述代码没有像预期的那样工作。
  1. program CtrlC;
  2. {$MODE OBJFPC}
  3. var DefaultBreakHandler: TCtrlBreakHandler;
  4. function EmergencyBreakHandler(IsCtrlBreak: Boolean): Boolean;
  5. begin
  6.   Writeln('Emergency Break');
  7.   Result := False;
  8.   if PtrInt(DefaultBreakHandler) > 0 then
  9.     DefaultBreakHandler(IsCtrlBreak);
  10. end;
  11. begin
  12.   DefaultBreakHandler :=
  13.     SysSetCtrlBreakHandler(@EmergencyBreakHandler);
  14.   if PtrInt(DefaultBreakHandler) < 0 then
  15.     Writeln('Failed');
  16.   repeat until False;
  17. end.
复制代码

按下 Ctrl-C 後程序就直接终止了。我的编译器版本是 2.2.4。

(这个问题我在 Free Pascal community 上问过,还没有得到解答。)
回复

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-6-23 23:38 , Processed in 0.041884 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表