Pergunta

Todo desenvolvedor do Windows está familiarizado demais com um alerta do formulário:

Foo.exe encontrou um problema e precisa fechar.

Eu me resignei aos meus aplicativos explodindo de tempos em tempos (apenas durante o desenvolvimento, é claro), mas quando o fazem, não quero ver "foo.exe" aqui. Eu quero ver um nome "amigável" como "Foobrowser ™".

Eu pesquisei a documentação MSDN alta e baixa por uma maneira de substituir essa string e não a encontrei. E eu conduzi muitas experiências para ver se conseguia tropeçar no mecanismo sem sorte. No entanto, quando procuro na Web por "encontrar um problema e precisa fechar", vejo muitas pessoas discutindo instâncias precedidas por um nome amigável, e duvido que todos eles substituam todo o alerta por si mesmos. :-)

Eu preciso que isso funcione para aplicativos nativos do Win32; .NET não é uma opção. O conjunto de exemplos que vejo discutido na web inclui o Microsoft Internet Explorer (um aplicativo nativo) e a Microsoft Works (o que eu suponho que ainda seja um aplicativo nativo, embora já tenha sido quatro eras desde que eu o vi).

Qual é o aperto de mão secreto?

Foi útil?

Solução

Não tenho certeza exatamente qual versão do Windows você está segmentando, mas os mais novos tentarão usar o nome do produto amigável quando você travar.

Certifique -se de adicionar um recurso de versão ao seu executável e forneça um nome de produto amigável e o nome do arquivo, na sequência de filmes.

este página no MSDN fornece mais informações.

Outras dicas

Meu entendimento é que, uma vez que sua exceção borbulha ao sistema operacional, você está sem sorte. Minha abordagem seria pegar a exceção antes da Ele chega ao sistema operacional. Nos meus aplicativos, tenho um formulário que mostro quando tenho uma exceção não atendida que permite ao usuário enviar relatórios de bug, impedindo que o sistema operacional mostre o formulário que você está falando.

Apenas uma perspectiva diferente :)

Por que não apenas renomear seu aplicativo executável FooBrowser™.exe?

Hmm. Não sei se isso é certo o que fará, mas vale a pena tentar. Tente examinar SetCurrentProcessExplicitAppUsModelid

Você não poderia criar um recurso simples de string que contenha o nome amigável do seu aplicativo e usá -lo ao formatar a mensagem?

O que você acha?

Espero que isso ajude, cumprimentos, Tom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top