TaskDialog没有处理(或替换)Windows 10?

时间:2017-10-19 20:15:37

标签: c# wpf windows-10 taskdialog

我们有一个较旧的WPF应用程序,它使用" Windows API代码包"为了显示一个任务对话框(在Vista中引入但在Windows 8中一直工作的东西)。

我现在正试图在Windows 10上运行该项目,当我尝试显示任务对话框时,我得到以下异常:

  

System.AccessViolationException :尝试读取或写入受保护的内存。这通常表明其他记忆已损坏   在Microsoft.WindowsAPICodePack.Dialogs.TaskDialogNativeMethods.TaskDialogIndirect(TaskDialogConfiguration taskConfig,Int32& button,Int32& radioButton,Boolean& verificationFlagChecked)
    在Microsoft.WindowsAPICodePack.Dialogs.NativeTaskDialog.NativeShow()
    在Microsoft.WindowsAPICodePack.Dialogs.TaskDialog.ShowCore()

这些API在Windows 10中是否不再可用?

在没有编写自定义对话框的情况下,是否有Windows 10中提供的类似功能的替换?

编辑:我让它运行(纯粹是运气,我猜?我没有改变任何代码),对话框弹出如下:

Win10 Task Dialog

应该有3个按钮,绝对没有中文字符,所以我同意这里肯定存在一些内存问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Windows 10仍支持“任务对话框”,但问题可能出在您似乎正在使用的库中:https://github.com/aybe/Windows-API-Code-Pack-1.1/issues/3

如问题描述中所述,它可能会在 64位 Windows上导致AccessViolationException(可能还有不正确的字符)。您可以通过应用引用的拉取请求中的更改来修复它。

注意:由于WinForms是开源的,因此在将来的.NET Core版本中要求包含正式的“任务对话框”实现:https://github.com/dotnet/winforms/issues/146