2017-06-03 133 views
-1

我正在做一個小工具來枚舉顯示並選擇與1920x1080相關的模式。我已將我的工具發佈給我的用戶,這要歸功於其中包含的遙測工具,我收到了很多報告,看起來我的EnumDisplaySettings工具對我的一些用戶不起作用:EnumDisplaySettings錯誤的分辨率

示例1:

EnumDisplaySettings : 
70 1680 1050 
EnumDisplaySettings : 
71 2715 1527 

Win7的 - 顯卡:NVIDIA的GeForce GTX 960 CPU:英特爾(R)核心(TM)i5-4590 CPU @ 3.30GHz

實施例2:

EnumDisplaySettings : 
64 1768 992 
EnumDisplaySettings : 
65 2715 1527 

Win7的 - 顯卡:NVIDIA的GeForce GTX 1060 6GB CPU:英特爾(R)酷睿(TM)i5-3350P CPU @ 3.10GHz

你可以看到其他的 「report_error_x.txt」在這裏:http://www.gaza-tools.com/koh/

我的代碼是在這裏:https://github.com/Gazatus/KoH_Ultimate_Edition/blob/master/HD%20-%20Scripts/patch1920.py

簡化代碼:

mode = 0 
smode = win32api.EnumDisplaySettings(None, mode) #first display mode infos 
     if smode.PelsWidth == 1920 and smode.PelsHeight == 1080: 
      succes = 1 
     else: 
      mode += 1 #increment mode and return to top 

在此先感謝!

+0

(問題:爲什麼win32api發現這些奇怪的分辨率? - 所有這些電腦似乎都有一個1920x1080顯示屏)) –

回答

0

原因是您的過程需要DPI virtualization。在清單中添加DPI感知設置,或者在啓動時撥打SetProcessDPIAwareSetProcessDPIAwareness

+0

謝謝!我不是具有WinAPI功能的家庭教師,我使用python編碼,僅用於科學,你能向我解釋如何使用它嗎?我已經紅色:https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms633543.aspx –

+0

我鏈接到文檔。你讀過它,對吧? –

+0

如果我明白我只需要放在第一行:user32.SetProcessDPIAware(),是嗎? –