Python 2.7 如何防止使用Windows PC的Python中的GetSystemMetrics()返回不同/错误的值?

Python 2.7 如何防止使用Windows PC的Python中的GetSystemMetrics()返回不同/错误的值?,python-2.7,screen-resolution,dpi,getsystemmetrics,Python 2.7,Screen Resolution,Dpi,Getsystemmetrics,我正在使用这段代码从Surface Pro第1代Win 8.1 PC(使用Python 2.7)打印显示器分辨率: import ctypes from ctypes import windll user32 = ctypes.windll.user32 screensize = (user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)) print "Screensize:", screensize 但问题是

我正在使用这段代码从Surface Pro第1代Win 8.1 PC(使用Python 2.7)打印显示器分辨率:

   import ctypes
   from ctypes import windll
   user32 = ctypes.windll.user32
   screensize = (user32.GetSystemMetrics(0), user32.GetSystemMetrics(1))
   print "Screensize:", screensize
但问题是,通过命令提示符运行脚本与通过pythonshell运行脚本得到的结果不同

仅仅运行脚本我就得到1280x720,但是通过空闲Shell我得到1920x1080

现在,由于我在Surface Pro上运行此功能,我几乎可以肯定这与DPI缩放有关(有人提出了类似的问题)。如果是这种情况,那么一定是因为PythonIdle禁用了DPI扩展

那么,我如何防止这种情况发生,以便在运行此代码时获得一致和准确的结果,而不管它是如何运行的,运行它的机器是什么类型的,或者DPI缩放是否已禁用?也许是CEF Python


非常感谢您的帮助。谢谢。

如果您想要监视器信息,请致电。

请原谅我的无知,但您能否给出一个如何调用的示例?您确实在让应用程序DPI意识到它们必须在任何触发虚拟化的Win API调用之前包含适当的清单文件或调用函数方面存在问题。我不知道如何对Python脚本执行此操作…顺便说一句,当您刚刚运行脚本并从Python IDLE中更正数字时,您得到了错误的(虚拟化)数字,因为Python IDLE是Dpi感知的,因此您通过它启动的脚本也将是Dpi感知的。请看一下这个