【问题标题】:Is there a way to stop TaskMessageDlg making sounds?有没有办法阻止 TaskMessageDlg 发出声音?
【发布时间】:2020-10-13 11:50:18
【问题描述】:

我想显示一个带有信息图标的 TaskMessageDlg,但我不想发出哔哔声。有可能吗?

【问题讨论】:

  • 这与其说是一个德尔福问题,不如说是一个 Windows 问题。那是因为TaskMessageDlg 只是系统对话框的包装。您总是可以使用CreateMessageDialog 来避免系统对话框。但这不会是一个正确主题的对话。否则你的问题实际上是关于TaskDialogIndirect 的问题。我不知道为您的应用抑制声音的简单方法。当然,您可以轻松地在系统级别禁用声音,这肯定是正确的做法。
  • 不,因为在我的应用程序的其他部分,我想要带有哔哔声的消息...

标签: delphi dialog delphi-10.3-rio


【解决方案1】:

我想显示一个带有信息图标的 TaskMessageDlg,但我不想发出哔哔声。

实际上,您可能不知道。 Windows Vista 中引入的任务对话框的优点在于,如果开发人员正确使用它们,它们在平台上提供了熟悉、一致且易于访问的用户体验。

此用户体验的一部分是使用标准系统图标及其相关声音,可由最终用户配置。

对于视障用户,声音实际上可能很重要。如果某个特定的最终用户不喜欢这些声音,那么他可以在操作系统中禁用它们。

有可能吗?

TaskMessageDlg 只是在 VCL 应用程序中显示任务对话框的一种方式,所以让我们将问题扩大到一般的任务对话框。

是的,这是可能的。不要使用TD_INFORMATION_ICON 标准图标,而是使用自定义图标。例如,您可以使用 Print Screen 和 Microsoft Paint 创建一个带有桌面上显示图标的 BMP 文件。或者,您可以使用LoadIconLoadIconWithScaleDown 或(可怕!)手动挖掘User32.dll 来提取系统图标。


作为概念证明:

  with TTaskDialog.Create(nil) do
    try
      Title := 'Too many frogs have been created.';
      CommonButtons := [tcbOk];
      Flags := [tfUseHiconMain, tfAllowDialogCancellation];
      CustomMainIcon.Handle := LoadIcon(0, IDI_INFORMATION);
      Execute;
    finally
      Free;
    end;

【讨论】:

  • 我无法在操作系统中禁用它们,因为我想要大多数对话框的声音,但我有一个经常使用的对话框并且声音很讨厌......但你给我的解决方案是杰出的 !谢谢 ! :) P.S:我不写商业用途的应用程序,只是为了我的需要。而且我没有视力障碍……
  • @MarusNebunu:这很公平! :)
猜你喜欢
  • 2020-12-18
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多