首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetProcessDpiAwareness错误码

SetProcessDpiAwareness错误码
EN

Stack Overflow用户
提问于 2016-05-11 16:30:22
回答 1查看 3.7K关注 0票数 2

在我的Delphi应用程序中(在动态加载SetProcessDpiAwareness XE7之后),我首先要添加一个对XE7窗口函数的调用。我知道最好使用清单来设置DPIAware值,而且我已经将其分开工作,并最终将使用它。但是,在开发期间,我希望使用命令行参数来设置DPIAwareness值,否则我必须重新构建应用程序来更改此状态。

问题是SetProcessDpiAwareness返回错误代码$800700A0。这在函数描述中没有记录,代码意味着什么?

啊,我找到了,由于参数的答案,我声明函数类型是错误的,我有:

TSetDPIFunc =函数(const PROCESS_DPI_AWARENESS):HRESULT;

但是PROCESS_DPI_AWARENESS并没有被定义为枚举。更改为以下内容,现在工作正常:

TSetDPIFunc =函数(const x:整型):HRESULT;

EN

回答 1

Stack Overflow用户

发布于 2016-05-11 17:02:07

0x8007XXXX是一个使用HRESULT_FROM_WIN32()HRESULTWIN32_FROM_HRESULT(0x800700A0)给出了0xA0,即错误代码160,即ERROR_BAD_ARGUMENTS (“一个或多个输入参数不正确”)。

对我来说,得到这个错误是没有意义的,因为这个函数甚至不带任何参数!

因此,我唯一能想到的是,它与the issue described here有关,假设您自己更改了DPI设置以进行测试,结果失败了:

因此,为了使SetProcessDPIAware (以及相关的方法: SetProcessDpiAwareness()和使用true的清单)正确工作,必须在更改DPI设置和运行程序之前再次注销和登录。

顺便说一句,如果这是有用的:为了测试清单而不需要完全重新构建,您可以使用mt.exe从命令行向应用程序附加清单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37168444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档