Como forçar um aplicativo a ser escalado em alta resolução?
Finja que existe um aplicativo cujos desenvolvedores o manifestaram como com reconhecimento de dpi alto, quando realmente não o é. Como forçar o dimensionamento de dpi?
Finja que existe um aplicativo que a Microsoft aplicou o
HighDpiAware
calço de compatibilidade " ", quando o aplicativo realmente não está. Como forçar o dimensionamento de dpi?
Como forçar o Windows a aplicar a escala de dpi a um aplicativo?
Edit: O que é escala de alta dpi?
Nem todos os usuários executam o Windows a 96dpi. Nem todo botão deve ter 75 x 23 pixels, nem toda barra de ferramentas tem 25 pixels de altura e nem todo glifo da visualização em árvores é 16 x 16. Se o usuário tiver escolhido uma configuração de dpi diferente para o Windows, você precisará dimensionar tudo adequadamente.
O problema é que quase nenhum desenvolvedor faz seu trabalho lidando bem com configurações de alta dpi. Na melhor das hipóteses, tudo permanecerá "do mesmo tamanho", o que significa que todos parecem minúsculos . Na pior das hipóteses, as formas são dispostas incorretamente, com o texto sendo cortado e os controles não visíveis.
Começando com o Windows Vista, e aproveitando o poder da composição da área de trabalho, a Microsoft desistiu dos desenvolvedores que estão fazendo seu trabalho e agora mentem para os aplicativos. Eles dizem aos aplicativos que o usuário está executando a 96dpi. O Windows usa a placa de vídeo e a Composição da área de trabalho para aumentar os formulários.
Pro: o conteúdo do formulário será um bom tamanho legível.
Contras: tudo ficará um pouco confuso.
Esse recurso de "alta escala de dpi" funciona apenas a critério do usuário e requer:
- Windows Vista ou mais recente
- Composição da área de trabalho a ser ativada
- o usuário desative "Usar escala de estilo do Windows XP"
- o usuário não desabilitar a escala para seu aplicativo
Como desenvolvedor, você pode optar por sair da escala de alta resolução; se você se esforçou para escrever seu aplicativo corretamente e sabe que lida com alta dpi corretamente. Você desabilita esse dimensionamento adicionando uma entrada de manifesto ao seu executável, declarando que tem " reconhecimento alto de dpi ".
O tópico de como fazer seu aplicativo respeitar as preferências do usuário (incluindo a face da fonte, o tamanho da fonte e a configuração de dpi) é uma questão para stack overflow
. Como é a sintaxe da entrada do manifesto que declara sua " conscientização de alta dpi ".
Esta pergunta, no superusuário , é como ignorar um desenvolvedor que seguiu em frente e adicionou uma entrada de manifesto com reconhecimento de dpi alta, quando, na verdade, o aplicativo não possui reconhecimento de dpi. Eles disseram ao Windows para desativar o dimensionamento, mas na verdade não testaram o aplicativo. Existem softwares disponíveis com uma entrada de manifesto com "reconhecimento alto de dpi" e agora o aplicativo não pode ser usado em "fontes grandes" (por exemplo, 120 dpi).
fonte
Respostas:
Hmm. Minha sugestão seria editar o manifesto e remover a declaração incorreta. E não se esqueça de incomodar o desenvolvedor sobre isso da maneira que puder!
Edit: Observe que deve ser possível simplesmente colocar o manifesto ao lado do executável, por exemplo
foo.exe
, porque você colocaria o manifestofoo.exe.manifest
. Consulte o artigo MSDN (consulte a seção "Sintaxe de nome de arquivo").fonte
.manifest
arquivo tinha precedência sobre o manifesto dentro do executável. Hoje, qualquer manifesto incorporado ao executável substitui qualquer.manifest
arquivo externo . não me lembro qual service pack do XP mudou - acho que foi o SP2.Acabei de lançar uma DLL que conecta e redireciona chamadas para SetProcessDPIAware. Para os aplicativos que desabilitam a escala de DPI por meio de código, esta é uma correção rápida e fácil (comparada à correção binária).
DPIMangler: publicação no blog , código fonte .
fonte
Você ainda pode editar o manifesto, basta editá-lo no próprio arquivo .exe. Procure um editor de recursos que tenha suporte manifesto. Um exemplo com suporte rudimentar é o XN Resource Editor.) Apenas encontre e exclua a linha que menciona HIGHDPIAWARE e salve o executável.
Certifique-se de fazer uma cópia do executável antes de editá-lo!
fonte
Gostaria de saber se ResizeEnable é o que você está procurando?
http://www.digitallis.co.uk/pc/ResizeEnable/
fonte