EnumDisplaySettings错误的解决方案

时间:2017-06-03 09:58:49

标签: python winapi resolution display

我正在做一个小工具来枚举显示并选择与1920x1080相关的模式。我已经向我的用户发布了我的工具,这要归功于其中包含的遥测工具,我收到了很多报告,似乎我的EnumDisplaySettings工具对我的一些用户来说并不适用:

示例1:

EnumDisplaySettings :
70  1680    1050
EnumDisplaySettings :
71  2715    1527

Win7 - 显卡:NVIDIA GeForce GTX 960 CPU:Intel(R)Core(TM)i5-4590 CPU @ 3.30GHz

示例2:

EnumDisplaySettings :
64  1768    992
EnumDisplaySettings :
65  2715    1527

Win7 - 显卡:NVIDIA GeForce GTX 1060 6GB CPU:Intel(R)Core(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

提前致谢!

1 个答案:

答案 0 :(得分:0)

原因是您的流程受DPI virtualization的约束。您可以在清单中添加DPI认知设置,也可以在启动时致电SetProcessDPIAwareSetProcessDPIAwareness