उच्च डीपीआई डिस्प्ले पर एक विंडो को स्केल करने के लिए मजबूर करना


2

4k डिस्प्ले के साथ समस्या यह है कि बहुत सारे पुराने प्रोग्राम उनके लिए डिज़ाइन नहीं किए गए थे, और वे स्केल नहीं करते थे। इसके परिणामस्वरूप एक छोटी खिड़की होती है, जो विशेष रूप से पुराने खेलों के लिए खराब होती है।

मैंने हाल ही में एक पोस्ट ऑनलाइन समझाते हुए बताया कि प्रोग्राम को स्केल करने के लिए कैसे बाध्य किया जाए, विशेष रूप से रजिस्ट्री में "PreferExternalManifest" सेट करके, फिर निम्नलिखित को "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>

मैं जानना चाहता हूं कि यह वास्तव में कैसे काम करता है, और क्या खिड़की को बड़े पैमाने पर भी मजबूर करना संभव है या नहीं (यह वास्तव में पुराना खेल है:)

जवाबों:


3

साथ PreferExternalManifestसेटिंग है कि exe में शामिल है मैनिफ़ेस्ट फ़ाइल सक्षम नजरअंदाज कर दिया है। अब स्व निर्मित अभिव्यक्ति का उपयोग किया जाता है। यहाँ यह लाइन है

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

विंडोज को बताता है कि प्रोग्राम DPI से अवगत नहीं है और Windows DPI वर्चुअलाइजेशन (धुंधले बिटमैप स्केलिंग) को लागू करेगा।

रजिस्ट्री सेटिंग को सक्षम करने का एक आसान तरीका है

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

प्रत्येक प्रोग्राम के लिए जिसे आप "ठीक" करना चाहते हैं।


क्या यह सिस्टम पर कहीं भी फ़ाइल नाम रखने वाले सभी निष्पादनों पर लागू नहीं होगा? आम तौर पर EXE फ़ाइलें बोलने के लिए अद्वितीय होते हैं, लेकिन ऐसा कुछ भी नहीं है कि जब तक वे अलग-अलग फ़ोल्डरों में हों, लेकिन यह रजिस्ट्री कुंजी ऐसा लगता है कि यह उस फ़ाइल नाम के साथ किसी भी EXE को प्रभावित करेगा। एक तरफ, स्केलिंग को आगे से कैसे ओवरराइड किया जाए इस पर कोई शब्द? उदाहरण के लिए, उस प्रोग्राम के लिए एक वैकल्पिक DPI लागू करना ताकि यह बड़ा हो जाए?
नीट द डार्क एबसोल

हाँ, यह उस नाम के साथ सभी exe पर लागू होगा।
जादूंद्रे

मैं (Unity.exe) देख रहा हूं विशेष एप्लिकेशन के लिए आपका दूसरा समाधान केवल एक ही था जो मैंने पाया कि मेरे लिए काम किया, और यह कई इंस्टॉल और रीइंस्टॉल के खिलाफ बहुत मजबूत होना चाहिए। आपको बहुत - बहुत धन्यवाद!
D Coetzee
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.