Неизвестный результат ошибки SetProcessDpiAwareness - PullRequest
0 голосов
/ 05 июня 2018

У меня 1 компьютер из 50, который возвращает ненулевой результат из SetProcessDpiAwareness, и я не могу найти на нем никакой информации.Я устанавливаю DPI Awareness на Unaware.У меня есть один компьютер, который возвращает значение 105621835743232 (десятичное число).Кажется, он по-прежнему устанавливает DPI Awareness на неопознанное значение, как и должно, но дает возвращаемое значение, которое не ожидается.

Private Declare Function SetProcessDpiAwareness Lib "shcore.dll" (ByVal Value As PROCESS_DPI_AWARENESS) As Long

Private Function SetDPI() As Long
    'Results from SetProcessDPIAwareness
    'Const S_OK = &H0&
    'Const E_INVALIDARG = &H80070057
    'Const E_ACCESSDENIED = &H80070005
    Dim lngResult As Long
    lngResult = SetProcessDpiAwareness(PROCESS_DPI_AWARENESS.Process_DPI_Unaware)
    Return lngResult

End Function

Это приложение winforms для clickonce, поэтому я не могу использовать манифест для установки DPI.

Любая помощь с поиском документации будет приветствоваться!

Заранее спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

Возвращаемое значение этой функции API является 32-битным целым числом, поэтому вы должны использовать Integer вместо Long.Обратите внимание, что Long является 64-битным типом.

Я также настоятельно рекомендую использовать p / invoke вместо Declare.Последний существует по причинам совместимости.P / invoke предлагает гораздо больший контроль над процессом импорта.

...