Winapi “我如何检测?”;所有显示的一个缩放级别";?

Winapi “我如何检测?”;所有显示的一个缩放级别";?,winapi,windows-8,windows-8.1,Winapi,Windows 8,Windows 8.1,Windows 8.1引入了这一荒谬的缺陷功能,它会自动决定用户在每个屏幕上的DPI比例。我正在指示用户关闭此功能,方法是单击控制面板中的复选框“让我为所有显示选择一个缩放级别”。这段1:22分钟的视频显示了设置的位置: 不管怎样,我的问题是,如何通过编程确定此设置是打开还是关闭的?我是否可以调用WinAPI,或者可以查询注册表设置?如果关闭此设置,我希望能够在我的应用程序中检测到该设置。您可以查询HKCU\Control Panel\Desktop\Win8DpiScaling 此钥匙和其他

Windows 8.1引入了这一荒谬的缺陷功能,它会自动决定用户在每个屏幕上的DPI比例。我正在指示用户关闭此功能,方法是单击控制面板中的复选框“让我为所有显示选择一个缩放级别”。这段1:22分钟的视频显示了设置的位置:


不管怎样,我的问题是,如何通过编程确定此设置是打开还是关闭的?我是否可以调用WinAPI,或者可以查询注册表设置?如果关闭此设置,我希望能够在我的应用程序中检测到该设置。

您可以查询
HKCU\Control Panel\Desktop\Win8DpiScaling

此钥匙和其他相关钥匙记录在,但相关文本如下:

控制面板\外观和个性化\显示用户 界面(UI)包含一个复选框:让我选择一个缩放级别 对于所有我的显示器,它控制系统是否应用 所有显示器的单一比例因子(如Windows®8及更早版本 Windows版本),或考虑以下因素的不同比例因子: 计算每个显示器的像素密度(Windows 8.1默认值)

此复选框配置HKCU\Control Panel\Desktop\Win8DpiScaling Windows 8.1中的注册表项


呃,程序不应该使用api调用而不是注册表吗?除非没有api。@大卫:据我所知,没有api返回通过GUI选择的值。虽然您可以调用和比较这些值,但没有API告诉您这些值是由于此特定GUI设置而相同,还是因为它们分别设置为相同的值。
Key value : 0   Meaning : Different scale factors for each display: Windows 8.1 default.Content that is moved from one display to another will be the right size, but can be bitmap-scaled.
Key value : 1   Meaning : Same scale factor is applied to all displays: Windows 8 and earlier Windows versions behavior.Content that is moved from one display to another might be the wrong size