Application.Terminate关不掉程序。

     程序要求运行时需要狗,如果运行时狗被拔掉,则程序退出。本来这也没什么,我的处理方法是:程序接收WM_DEVICECHANGE系统消息,然后判断狗是否存在,不存在则退出。

代码:

 

  1.  irtn := fIsUkeyExist;
  2.  if irtn <> 1 then Application.Terminate;

但是今天,测试人员发现,如果拔出狗时,鼠标正在浏览菜单(停留在程序菜单上面),则程序不会退出。我试了试确实如此。

后来我改成如下方式,就行了:

  1.     irtn := fIsUkeyExist;  //判断ukey是否存在
  2.     if irtn <> 1 then
  3.     begin
  4.       frmMain.Close;
  5.       Halt;
  6.     end

总结下:可能是因为Application.Terminate实质是给程序主窗口发送了一个WM_CLOSE的消息,而此时的焦点在菜单上面,不在主窗口上面,而主窗口收不到这个消息,所以不退出。而halt则是强制退出。

   这种情况还真是第一次碰到,写下来,留做纪念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当启动某个程序时,出现“无法定位程序输入点ucrtbase.terminate于动态链接库”的错误提示,意味着该程序无法在当前的系统环境中找到所需要使用的函数。 ucrtbase.terminate是运行C++应用程序时的一个终止程序的函数,它属于Microsoft Universal CRT库,这个库是我们平常开发应用程序经常要用到的一个组件。如果系统找不到这个函数,一般就说明这个库没有安装在当前的系统上。 解决这个问题的方法,可以有多种途径: 1.卸载并重新安装程序 无法定位程序输入点ucrtbase.terminate于动态链接库这个错误提示有可能会跟某一个程序的安装出现了问题有关系。此时我们可以尝试先卸载并重新安装一遍程序来解决这个问题。 2.安装运行库 如果出现无法定位程序输入点ucrtbase.terminate于动态链接库,很有可能是由于系统缺少必要的运行库导致的。这时我们可以去Microsoft官网下载需要的Microsoft Universal CRT运行库,并在系统中进行安装。 3.使用系统恢复 在某些特殊情况下,出现无法定位程序输入点ucrtbase.terminate于动态链接库的错误提示可能是由于应用程序文件本身已经损坏导致的。这时,我们可以尝试使用系统的恢复功能来解决这个问题。 总之,无法定位程序输入点ucrtbase.terminate于动态链接库的错误提示,可以通过以上这些方法来逐一排查,找到原因并进行有效的解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值