未知的 SetProcessDpiAwareness 错误结果

Unknown SetProcessDpiAwareness Error Result

我有 50 台计算机中有 1 台计算机return从 SetProcessDpiAwareness 得到了一个非零结果,我找不到关于它的任何信息。我将 DPI Awareness 设置为 Unaware。我有一台计算机 returning 值为 105621835743232(十进制)。它似乎仍在将 DPI 感知设置为应有的无意识状态,但给出了一个预期之外的 return 值。

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

这是一个 clickonce winforms 应用程序,所以我不能使用清单来设置 DPI。

非常欢迎任何有关查找文档的帮助!

提前致谢。

此 API 函数的 return 值是一个 32 位整数,因此您应该使用 Integer 而不是 Long。请注意 Long 是 64 位类型。

我也强烈建议使用 p/invoke 而不是 Declare。后者出于兼容性原因而存在。 P/invoke 可以更好地控制导入过程。