Как отключить поддержку высоких точек на дюйм в Windows 7? - PullRequest
0 голосов
/ 21 января 2019

У меня есть старое приложение, для которого я хочу использовать виртуализацию DPI в Windows 7 (также известную как размытое масштабирование формы ).Чтобы попробовать это в примере проекта, я сделал следующее:

  • включить отображение текста 125% на компьютере с Windows 7
  • отключил любой манифест для этого проекта
  • читать Monitor.PixelsPerInch с результатом 120

Я пробовал кое-что, но мне не удалось получить результат 96 dpi здесь:

  • used<dpiAware>false</dpiAware> во внутреннем или внешнем предоставленном манифесте
  • изменил настройки совместимости приложений
  • изменил тему Windows

Я также подумал, что SetProcessDPIAware называется где-то вVCL.Я нашел System.win.HighDpi, который содержит SetProcessDPIAware в своем блоке инициализации, но этот блок не включен в мой минимальный образец.

Пример манифеста (настройка dpiAware, похоже, игнорируется):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
    </requestedPrivileges>
  </security>
 </trustInfo>
    <application xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <windowsSettings> 
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">False</dpiAware> 
    </windowsSettings> 
  </application> 
</assembly>
...