Получить значение масштабирования экрана Windows - PullRequest
0 голосов
/ 25 февраля 2019

Есть ли способ получить значение масштабирования экрана Windows?200% на картинке - это именно то, что я хотел бы получить.
enter image description here

Этот вопрос - только половина средств для достижения другой цели, которая сформулирована ввопрос: Позиция Excel Shape нарушена настройками Windows Display Zoom

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете получить эту информацию с помощью вызова WIN32-API

Option Explicit

Private Const LOGPIXELSX As Long = 88

#If VBA7 Then
    Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As LongPtr, ByVal nIndex As Long) As Long
    Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
    Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hdc As LongPtr) As Long
#Else
    Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
#End If

Public Function GetDpi() As Long
    #If VBA7 Then
        Dim hdcScreen As LongPtr
    #Else
        Dim hdcScreen As Long
    #End If
    hdcScreen = GetDC(0)

    Dim iDPI As Long
    iDPI = -1

    If (hdcScreen) Then
        iDPI = GetDeviceCaps(hdcScreen, LOGPIXELSX)
        ReleaseDC 0, hdcScreen
    End If

    GetDpi = iDPI
End Function

Это приведет к 192, например, 200%:

  • 96 - Меньше 100%
  • 120 - Средний 125%
  • 144 - Большой 150%
  • 192 - Очень большой 200%
  • 240 - Пользовательский 250%
  • 288 - Пользовательский 300%
  • 384 - Пользовательский 400%
  • 480 - Пользовательский 500%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...