我刚刚在 Delphi 中创建了一个新应用程序,即使其他应用程序以相同的方式编写,这个新应用程序也不会由 Windows 自动缩放。所有应用程序都具有完全相同的设置(例如,scaled = false)。 Windows 通常会正确缩放它们(否则,如果缩放设置为 150% 或更高,它们会太小)。
我发现使用 .exe 文件的属性菜单,选项卡“兼容性”、“更改高 DPI 设置”并在底部设置“按系统缩放”可以解决问题,并且应用程序可以正确缩放。
但是我如何默认激活此选项(注册表?)或者如何以编程方式执行此操作?
您可以为您的应用程序提供指定
<dpiAwareness>unaware</dpiAwareness>
(Windows 10 v1607 及更高版本)或 <dpiAware>false</dpiAware>
(早期版本)的应用程序清单。
或者,在运行时创建任何 GUI 窗口之前,您可以调用
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE)
(Windows 10 v1607 及更高版本)或 SetProcessDpiAwareness(PROCESS_DPI_UNAWARE)
(早期版本)。
有关更多详细信息,请参阅 MSDN 上的设置进程的默认 DPI 感知。