防止 Windows 任务栏和消息出现在无限期运行的全屏 Delphi FMX 应用程序上

问题描述 投票:0回答:1

我开发了Delphi 10.2。 FMX 应用程序在 Windows 10 和 11 上以全屏模式运行,长时间(几个月)连续显示动画图形。为了保持不间断的显示,我禁用了所有 Windows 消息和通知。然而,Windows 任务栏或其他 Windows 消息已经出现在应用程序上方,从而破坏了全屏体验。

为了解决这个问题,我尝试实现一个每 10 秒触发一次的 TTimer,尝试将应用程序带回前台并重新断言其全屏状态。

procedure TForm1.Timer1Timer(Sender: TObject);
var
  NativeHandle: HWND;
begin
  // Retrieve the native window handle
  NativeHandle := WindowHandleToPlatform(Self.Handle).Wnd;

  // Bring the form to the front
  SetForegroundWindow(NativeHandle);
end;

当我从 IDE 中以调试模式启动应用程序时,效果很好。当我通过双击 EXE 文件直接在 IDE 外部运行应用程序时,它不起作用。在这种情况下,当计时器事件触发时不会发生任何事情。

可能是什么问题?

或者我的整个方法是否走向了错误的方向?

windows delphi firemonkey
1个回答
-1
投票

在干净的桌面上启动您的程序。启动任务管理器,然后在“详细信息”下从两个资源管理器中选择每个资源管理器,然后结束任务。这将使您的程序和任务管理器显示出来。使用“开始新任务”并在运行对话框的编辑框中添加“资源管理器”以返回“Windows”。

但是,以上仅有助于隐藏任务栏。在我运行 Delphi 12.2 的 Win 11 机器上,构建和运行 FMX 程序可以正常工作,直到关闭 Delphi(即使使用分离)。通过不在上面的桌面中运行 Delphi 可以解决此问题。即在不运行 Delphi 的情况下运行 exe。

工业应用程序可能仅加载程序*并需要登录才能访问任务管理器和文件资源管理器。

  • 您将更改 Windows 注册表以启动您的程序而不是资源管理器。
© www.soinside.com 2019 - 2024. All rights reserved.