我添加了一个对SetProcessDpiAwareness窗口函数的调用,作为我的Delphi XE7应用程序中的第一件事(在dynamic加载shcore DLL之后)。 我知道最好使用一个清单来设置DPIAware的价值,我已经分开工作,并将最终使用它。 然而,在开发过程中,我想使用命令行参数来设置DPIAwareness值,否则我不得不重build应用程序来改变这个状态。
问题是SetProcessDpiAwareness返回错误代码$ 800700A0。 这在function描述中没有记载,代码是什么意思?
啊我find了,由于看到参数的答案,我已经宣布函数types错了,我有:
TSetDPIFunc =函数(const PROCESS_DPI_AWAREnesS):HRESULT; STDCALL;
delphiSaveDialog不显示
TWebbrowser依赖于IE版本吗?
我怎样才能阻止我的应用程序显示在任务栏上?
如何事先不知道他们的本地化名称,如何使用Windows安全组?
当对话框重新打开时,访问键应该保持下划线?
但PROCESS_DPI_AWAREnesS没有被定义为一个枚举。 改为以下,现在工作正常:
TSetDPIFunc =函数(const x:Integer):HRESULT; STDCALL;
如何使运行时从服务器打开文件列表中删除的EXE(从共享开始)
是保持线程优化?
如何在Delphi中实时读取cygwin程序的命令行输出?
我应该使用什么XMLparsing器与Delphi XE2的iOS项目?
计划任务是否收到WM_QUERYENDSESSION消息?
0x8007XXXX是使用HRESULT_FROM_WIN32() 封装在COM HRESULT的Win32错误代码 。 WIN32_FROM_HRESULT(0x800700A0)给出0xA0 ,即错误代码160,这是ERROR_BAD_ARGUMENTS (“一个或多个输入参数不正确”)。
尽管你得到这个错误对我来说没有意义,因为这个函数甚至没有任何参数 !
所以我能想到的唯一的事情就是, 这里所描述的问题有一些问题 ,假设你自己改变了DPI设置进行测试,然后失败了:
因此,为了使SetProcessDPIAware(以及相关方法:SetProcessDpiAwareness()和显示为true)正常工作,必须在更改DPI设置之后并在运行程序之前注销并重新登录。
顺便说一句,如果这是有帮助的:为了测试不需要完全重建的清单,可以使用mt.exe从命令行将清单附加到应用程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。