gpt4 book ai didi

windows - SetProcessDpiAwareness 错误代码

转载 作者:可可西里 更新时间:2023-11-01 10:34:06 28 4
gpt4 key购买 nike

我正在添加对 SetProcessDpiAwareness 窗口函数的调用,作为我的 Delphi XE7 应用程序中的第一件事(在动态加载 shcore DLL 之后)。我知道最好使用 list 来设置 DPIAware 值,我已经单独使用它并最终会使用它。但是在开发过程中,我想使用命令行参数来设置 DPIAwareness 值,否则我必须重建应用程序才能更改此状态。

问题是 SetProcessDpiAwareness 返回错误代码 $800700A0。那个函数描述里没有记载,代码是什么意思?

啊我找到了,多亏了看参数的答案,我把函数类型声明错了,我有:

TSetDPIFunc = function (const PROCESS_DPI_AWARENESS) : HRESULT;标准调用;

但 PROCESS_DPI_AWARENESS 未定义为枚举。更改为以下内容,现在可以正常工作了:

TSetDPIFunc = function (const x: Integer) : HRESULT;标准调用;

最佳答案

0x8007XXXXWin32 error code encapsulated in a COM HRESULT使用 HRESULT_FROM_WIN32() . WIN32_FROM_HRESULT(0x800700A0)给出0xA0,即错误代码160,即ERROR_BAD_ARGUMENTS (“一个或多个输入参数不正确”)。

虽然你得到这个错误对我来说毫无意义,因为这个函数甚至不接受任何参数!

所以我唯一能想到的就是它与the issue described here有关。 ,假设您自己更改了 DPI 设置以进行测试,然后它失败了:

So it seems that in order for SetProcessDPIAware (and the related approaches: SetProcessDpiAwareness() and manifest with true) to work correctly, one has to log out and login again after changing the DPI setting and before running the program.

顺便说一下,如果这有帮助的话:为了在不完全重建的情况下测试 list ,您可以使用 mt.exe从命令行将 list 附加到您的应用程序。

关于windows - SetProcessDpiAwareness 错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168444/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com