Неизвестный результат ошибки SetProcessDpiAwareness
У меня есть 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 ответ
Возвращаемое значение этой функции API является 32-битным целым числом, поэтому вы должны использовать Integer
скорее, чем Long
, Обратите внимание, что Long
это 64-битный тип.
Я также настоятельно рекомендую использовать p/invoke, а не Declare
, Последний существует по причинам совместимости. P/invoke предлагает гораздо больший контроль над процессом импорта.