2015-04-06 72 views
1

Windows 8.1引入了這個荒謬的 錯誤 功能,它可以自動根據每個屏幕爲用戶決定DPI縮放比例。我指示用戶關閉此功能,方法是單擊控制面板中的「允許我爲所有顯示選擇一個縮放級別」複選框。這1:22分鐘的錄像顯示了設置爲: https://www.youtube.com/watch?v=sE3IUTPy1WA如何檢測「所有顯示器的縮放級別」?

不管怎樣,我的問題是,我怎麼能編程方式確定此設置是否打開或關閉?是否有可以進行的Win API調用,或者我可以查詢的註冊表設置?如果此設置關閉,我希望能夠檢測到我的應用程序內。

回答

1

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

此鍵和其他相關的關鍵點在DPI-related APIs and registry settings證明,但相關的文字如下:

控制面板\外觀和個性化\顯示用戶 界面(UI)包括複選框:讓我爲我的所有顯示選擇一個縮放級別 ,該級別控制系統是否將單比例因子應用於所有顯示器(如Windows®8和Windows的早期版本 )或不同的s採用 的製表因子計算每個顯示器的像素密度(Windows 8.1默認值)。

此複選框在Windows 8.1中配置HKCU \ Control Panel \ Desktop \ Win8DpiScaling 註冊表項。

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 
+0

完美,謝謝。我會測試 – mikew

+0

呃,應該不是程序使用api調用而不是註冊表?那是除非沒有api。 –

+0

@David:據我所知,沒有API返回通過GUI選擇的值。雖然您可以調用[GetScaleFactorForMonitor](https://msdn.microsoft.com/en-us/library/windows/desktop/dn302060.aspx)並比較這些值,但沒有API會告訴您它們是否全部相同由於這個特定的GUI設置,或者因爲它們被單獨設置爲相同的值。 – IInspectable