Delphi 有没有办法阻止TaskMessageDlg发出声音?

Delphi 有没有办法阻止TaskMessageDlg发出声音?,delphi,dialog,delphi-10.3-rio,Delphi,Dialog,Delphi 10.3 Rio,我想显示一个带有信息图标的TaskMessageDlg,但我不想听到嘟嘟声。可能吗 我想显示一个带有信息图标的TaskMessageDlg,但我不想听到嘟嘟声 事实上,你可能不知道。Windows Vista中引入的任务对话框的好处在于,如果开发人员正确使用它们,它们可以在平台上提供熟悉、一致且可访问的用户体验 此用户体验的一部分是使用标准系统图标及其相关声音,可由最终用户进行配置 对于视力受损的用户来说,声音实际上可能很重要。如果某个特定的最终用户不喜欢这些声音,那么他可以在操作系统中禁用它们

我想显示一个带有信息图标的TaskMessageDlg,但我不想听到嘟嘟声。可能吗

我想显示一个带有信息图标的TaskMessageDlg,但我不想听到嘟嘟声

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

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

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

可能吗

TaskMessageDlg
只是在VCL应用程序中显示任务对话框的一种方法,因此让我们将问题扩展到一般的任务对话框

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


作为概念证明:

使用TTaskDialog.Create(nil)do
尝试
标题:=“创造了太多的青蛙。”;
CommonButtons:=[tcbOk];
标志:=[tfUseHiconMain,tfAllowDialogCancellation];
CustomMainIcon.Handle:=LoadIcon(0,IDI_信息);
执行;
最后
自由的
结束;
我想显示一个带有信息图标的TaskMessageDlg,但我不想听到嘟嘟声

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

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

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

可能吗

TaskMessageDlg
只是在VCL应用程序中显示任务对话框的一种方法,因此让我们将问题扩展到一般的任务对话框

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


作为概念证明:

使用TTaskDialog.Create(nil)do
尝试
标题:=“创造了太多的青蛙。”;
CommonButtons:=[tcbOk];
标志:=[tfUseHiconMain,tfAllowDialogCancellation];
CustomMainIcon.Handle:=LoadIcon(0,IDI_信息);
执行;
最后
自由的
结束;

这与其说是Delphi问题,不如说是Windows问题。这是因为
TaskMessageDlg
只是系统对话框的包装器。您可以始终使用
CreateMessageDialog
来避免出现系统对话框。但这并不是一个主题恰当的对话。否则,您的问题实际上是关于
TaskDialogIndirect
的问题。我不知道有什么简单的方法可以为你的应用程序抑制声音。当然,在系统级禁用声音对您来说很容易,这肯定是正确的做法。不,因为在我的应用程序的其他部分中,我希望消息带有蜂鸣声…这与其说是Delphi问题,不如说是Windows问题。这是因为
TaskMessageDlg
只是系统对话框的包装器。您可以始终使用
CreateMessageDialog
来避免出现系统对话框。但这并不是一个主题恰当的对话。否则,您的问题实际上是关于
TaskDialogIndirect
的问题。我不知道有什么简单的方法可以为你的应用程序抑制声音。当然,在系统级禁用声音对您来说很容易,这肯定是正确的做法。不,因为在我的应用程序的其他部分中,我希望消息带有蜂鸣音…我无法在操作系统中禁用它们,因为我希望大多数对话框都有声音,但我有一个经常使用的对话,而且声音很好听。。。但是你给我的解决方案太棒了!谢谢!:)附言:我不写商业用途的应用程序,只是为了我的需要。而且我没有视力受损…@MarusNebunu:这很公平!:)我不能在操作系统中禁用它们,因为我希望大多数对话框都有声音,但我有一个经常使用的对话框,而且声音很好听。。。但是你给我的解决方案太棒了!谢谢!:)附言:我不写商业用途的应用程序,只是为了我的需要。而且我没有视力受损…@MarusNebunu:这很公平!:)