MsgBox(0, "", "DPI缩放后的-分辨率:" & @DesktopWidth & "x" & @DesktopHeight)
_SetProcessDPIAware()
MsgBox(0, "", "原始分辨率-分辨率:" & @DesktopWidth & "x" & @DesktopHeight)
Func _SetProcessDPIAware()
Local $aRet
If @OSBuild < 6000 Then Return ;判断系统版本 Windows Vista
If @OSBuild < 9600 Then ;判断系统版本 win8.1(9600)
$aRet = DllCall("User32.dll", "BOOL", "IsProcessDPIAware") ;检查进程是否支持DPI感知
Return $aRet[0]
If $aRet[0] = False Then
$aRet = DllCall('User32.dll', 'BOOL', 'SetProcessDPIAware') ;设置:系统DPI感知
If @error Then Return SetError(@error, 0, False)
Return
EndIf
Else
$aRet = DllCall("Shcore.dll", "BOOL", "GetProcessDpiAwareness", "HWND", 0, "int*", 0) ;检查进程是否支持DPI感知
If @error Then Return SetError(@error, 0, False)
If $aRet[2] <> 2 Then ;0不支持DPI感知 1,系统DPI感知 2,监视器DPI感知
$aRet = DllCall("Shcore.dll", "BOOL", "SetProcessDpiAwareness", "int", 2) ;设置:监视器DPI感知
If @error Then Return SetError(@error, 0, False)
Return
EndIf
EndIf
EndFunc ;==>_SetProcessDPIAware
#EndRegion DPI函数
|