7

每个 Windows 开发人员都非常熟悉以下形式的警报:

Foo.exe 遇到问题需要关闭。

我已经接受了我的应用程序不时爆炸(当然只是在开发过程中),但是当他们这样做时,我不想在这里看到“Foo.exe”。我想看到一个“友好”的名称,例如“FooBrowser™”。

我已经搜索了 MSDN 文档的高低,寻找覆盖这个字符串的方法,但没有找到它。而且我已经进行了很多实验,看看我是否可以在没有任何运气的情况下偶然发现这个机制。但是,当我在网上搜索“遇到问题并需要关闭”时,我看到很多人在讨论以友好名称开头的实例,我怀疑他们是否都用自己的警报替换了整个警报。:-)

我需要它来处理本机 Win32 应用程序;.NET 不是一个选项。我在网上看到的一组示例包括 Microsoft Internet Explorer(本机应用程序)和 Microsoft Works(我认为它仍然是本机应用程序,尽管自从我看到它已经过去了 4 年)。

什么是秘密握手?

4

5 回答 5

4

我不确定您所针对的 Windows 版本到底是什么,但较新的版本会在您崩溃时尝试使用友好的产品名称。

确保向可执行文件添加版本资源,并在 FileDescription 字符串中提供友好的产品名称和文件名。

MSDN 上的此页面提供了更多信息。

于 2009-12-11T00:47:50.830 回答
2

我的理解是,一旦你的异常冒泡到操作系统,你就不走运了。我的方法是在异常到达操作系统之前捕获它。在我的应用程序中,当我遇到未处理的异常时,我会显示一个表单,该异常允许用户提交错误报告,从而阻止操作系统显示您正在谈论的表单。

只是一个不同的观点:)

于 2009-12-11T00:40:09.497 回答
1

为什么不重命名您的应用程序可执行文件FooBrowser™.exe

于 2009-12-11T00:37:25.230 回答
1

唔。我不知道这是否确定会做什么,但值得一试。尝试查看SetCurrentProcessExplicitAppUserModelID

于 2009-12-11T00:38:50.060 回答
0

您不能创建一个包含应用程序友好名称的简单字符串资源并在格式化消息时使用它吗?

你怎么看?

希望这会有所帮助,最好的问候,汤姆。

于 2009-12-11T00:34:12.533 回答