Jump to content

Adjust DPI settings

Recommended Posts



I was using your GetDPI.au3 but it is giving error: Can not initiaze a variable with itself at line 8,

Line 8 = Local $hDC = DllCall("user32.dll", "long", "ReleaseDC", "long", $hWnd, "long", $hDC)

Could you please suggest. Also, I wanted to have the DPI as 120 instead of 96.

Share this post

Link to post
Share on other sites

The error is because the variable $hDC has already been declared and is used as one of the parameters in the dllcall. The return value from the call is not used in the function so you can remove the Local $hDC part.

It maybe OK to just comment out the line. as I don't think it is needed in this instance.

Share this post

Link to post
Share on other sites

Comment or Remove Local $hDC or rename to anythink !


MsgBox(64, "", "DPI= " & _GetDPI() & @CRLF & " DPIRat= " & @extended)

Func _GetDPI()
    Local $iDPI, $iDPIRat, $Logpixelsy = 90, $hWnd = 0
    Local $hDC = DllCall("user32.dll", "long", "GetDC", "long", $hWnd)
    Local $aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $hDC[0], "long", $Logpixelsy)
    DllCall("user32.dll", "long", "ReleaseDC", "long", $hWnd, "long", $hDC)
    $iDPI = $aRet[0]
    ;; Set a ratio for the GUI dimensions based upon the current DPI value.
    If $iDPI < 145 And $iDPI > 121 Then
        $iDPIRat = $iDPI / 95
    ElseIf $iDPI < 121 And $iDPI > 84 Then
        $iDPIRat = $iDPI / 96
    ElseIf $iDPI < 84 And $iDPI > 0 Then
        $iDPIRat = $iDPI / 105
    ElseIf $iDPI = 0 Then
        $iDPI = 96
        $iDPIRat = 94
        $iDPIRat = $iDPI / 94
    Return SetError(0, $iDPIRat, $iDPI)
EndFunc   ;==>_GetDPI



Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.