Forçando uma janela para ser dimensionada em telas com DPI alto

1

O problema com as exibições do 4k é que muitos programas antigos não foram projetados para eles e não são dimensionados. Isso resulta em ter uma pequena janela, o que é particularmente ruim para jogos mais antigos.

Recentemente, encontrei um post on-line explicando como forçar a escala do programa, especificamente definindo "PreferExternalManifest" no registro e colando o seguinte em "EXEname.manifest":

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
 xmlns="urn:schemas-microsoft-com:asm.v1"
 manifestVersion="1.0"
 xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
       type="win32"
       name="Microsoft.Windows.Common-Controls"
       version="6.0.0.0" processorArchitecture="*"
       publicKeyToken="6595b64144ccf1df"
       language="*">
      </assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
       type="win32"
       name="Microsoft.VC90.CRT"
       version="9.0.21022.8"
       processorArchitecture="amd64"
       publicKeyToken="1fc8b3b9a1e18e3b">
      </assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
         level="asInvoker"
         uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <asmv3:application>
    <asmv3:windowsSettings
     xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <ms_windowsSettings:dpiAware
       xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        false
      </ms_windowsSettings:dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

Gostaria de saber exatamente como isso funciona e se é possível forçar uma janela a aumentar ainda mais (é um jogo antigo realmente : p)

    
por Niet the Dark Absol 06.06.2017 / 13:06

1 resposta

1

Com as configurações de PreferExternalManifest ativadas, o arquivo de manifesto incluído no exe é ignorado. Agora o manifesto auto criado é usado. Aqui esta linha

<ms_windowsSettings:dpiAware
       xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        false
</ms_windowsSettings:dpiAware>

informa ao Windows que o programa não está ciente de DPI e que o Windows aplicará a virtualização de DPI (escala de bitmap fora de foco).

Uma maneira mais fácil é ativar uma configuração de registro

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\PROGRAMNAME.exe]
"dpiAwareness"=dword:00000000

para cada programa que você deseja "corrigir".

    
por 06.06.2017 / 16:42

Tags