介绍

在 Windows 11 22H2 中,在特定应用程序中只需按 [Half/Full] 键即可崩溃看起来。
Windows 11 22H2 で〔半角/全角〕キーを押すとアプリケーションがクラッシュする
尤其是浮点异常使应该使用的应用程序崩溃许多 Delphi 应用程序都属于这一类。

从 Windows 10 开始,IME 经常出现奇怪的行为,所以我使用了[以前のバージョンの Microsoft IME を使う],一开始并没有意识到这个问题,但是我从一条推文中了解到文本编辑器“Mery”的作者 Haijin Boys。

“TeraPad”似乎也出现了同样的问题。

解决方法

似乎有一些解决方法。

■ 使用早期版本的 Microsoft IME

[設定][時刻と言語 > 言語と地域 > Microsoft IME > 全般][使用以前版本的 Microsoft IME]
Windows 11 22H2 で〔半角/全角〕キーを押すとアプリケーションがクラッシュする

■ 不要发送可选的诊断数据

[設定][プライバシーとセキュリティ > 診断とフィードバック][发送可选的诊断数据]离开
Windows 11 22H2 で〔半角/全角〕キーを押すとアプリケーションがクラッシュする

■ 不要在应用程序端使用浮点异常

在 Delphi 中,您可以使用以下代码避免浮点异常:

uses
  ..., System.Math;
...

  SetExceptionMask(exAllArithmeticExceptions);

在旧的 Delphi 中,代码如下所示:

uses
  ..., Math;
...

  SetExceptionMask([exInvalidOp..exPrecision]);

ARM系列CPU不支持浮点异常,但是FireMonkey应用默认不使用浮点异常,所以不会出现这个问题。

所以它发生在 VCL 应用程序中,但不仅仅是那些用最近的 Delphi 编译的应用程序,它也发生在旧的 Delphi 编译的应用程序中。

任何使用浮点异常的语言都会有同样的问题。另一方面,这也意味着只要使用新的 IME,就不能使用浮点异常。

SetExceptionMask() 在 Delphi 6 及更高版本中实现。遇到问题的早期版本的 Delphi 应用程序应该使用 Set8087CW() 来完成等效操作。

也可以看看:

综上所述

应用程序崩溃是因为“在 Windows 11 (22H2) 上使用新 IME 并发送可选诊断数据时,通过按 [半角/全角] 键打开 IME 时出现浮点异常。do”这似乎是微软 IME 的一个 bug。

微软的反馈中心也有这个问题。

如果您在此问题上遇到问题,请投票。

也可以看看:


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308628451.html

相关文章:

  • 2022-12-23
  • 2022-02-18
  • 2022-12-23
  • 2021-12-17
  • 2021-09-01
  • 2021-08-19
猜你喜欢
  • 2021-10-29
  • 2021-10-07
  • 2021-07-10
  • 2021-07-21
  • 2021-11-20
  • 2022-01-10
相关资源
相似解决方案