Как я могу настроить “%s столкнулся с проблемой и должен закрыться”?
Вопрос
Каждый разработчик Windows слишком хорошо знаком с предупреждением в форме:
Foo.exe столкнулся с проблемой и нуждается в закрытии.
Я смирился с тем, что мои приложения время от времени взрываются (конечно, только во время разработки), но когда это происходит, я не хочу видеть "Foo.exe" здесь.Я хочу видеть "понятное" имя, такое как "FooBrowser™".
Я просмотрел документацию MSDN вдоль и поперек в поисках способа переопределить эту строку и не нашел его.И я провел множество экспериментов, чтобы посмотреть, смогу ли я наткнуться на этот механизм без всякой удачи.Однако, когда я ищу в Интернете "столкнулся с проблемой и должен закрыться", я вижу множество людей, обсуждающих экземпляры, которым предшествует понятное имя, и я сомневаюсь, что все они заменяют все предупреждение своим собственным.:-)
Мне нужно, чтобы это работало для собственных приложений Win32;.NET - это не вариант.Набор примеров, которые я вижу обсуждаемыми в Интернете, включает Microsoft Internet Explorer (родное приложение) и Microsoft Works (которое, я полагаю, все еще является родным приложением, хотя прошло четыре эпохи с тех пор, как я его увидел).
В чем секрет рукопожатия?
Решение
Я не уверен точно, на какую версию Windows вы ориентируетесь, но более новые будут пытаться использовать понятное название продукта при сбое.
Убедитесь, что вы добавили ресурс версии в свой исполняемый файл и указали понятное название продукта и имя файла в строке FileDescription.
Это Страница в MSDN содержится дополнительная информация.
Другие советы
Насколько я понимаю, как только ваше исключение всплывает в операционной системе, вам не повезло.Мой подход состоял бы в том, чтобы перехватить исключение до того , как он достигает операционной системы.В моих приложениях у меня есть форма, которую я показываю, когда у меня возникает необработанное исключение, которое позволяет пользователю отправлять отчеты об ошибках, не позволяя операционной системе отображать форму, о которой вы говорите.
Просто другая перспектива :)
Почему бы просто не переименовать исполняемый файл вашего приложения FooBrowser™.exe
?
хм.Я не знаю, точно ли это поможет, но попробовать стоит.Попробуйте заглянуть в SetCurrentProcessExplicitAppUserModelID SetCurrentProcessExplicitAppUserModelID
Не могли бы вы создать простой строковый ресурс, содержащий понятное название вашего приложения, и использовать его при форматировании сообщения?
А ты как думаешь?
Надеюсь, это поможет, С наилучшими пожеланиями, Том.