EnumDisplaySettings错误的分辨率

问题描述:

我正在做一个小工具来枚举显示并选择与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显示屏)) –

原因是您的过程需要DPI virtualization。在清单中添加DPI感知设置,或者在启动时拨打SetProcessDPIAwareSetProcessDPIAwareness

+0

谢谢!我不是具有WinAPI功能的家庭教师,我使用python编码,仅用于科学,你能向我解释如何使用它吗?我已经红色:https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms633543.aspx –

+0

我链接到文档。你读过它,对吧? –

+0

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