Delphi 同一台机器上的两个应用程序的屏幕尺寸不同...如何解决?

Delphi screen dimensions differ on two apps on same machine...how to resolve?

我有两个应用程序使用了一些相同的表单。当我 运行 应用程序时,我注意到这些表格显示不同。我把这段代码放在项目源码的顶部:

var f: TextFile;
s: String;

{$R *.res}

begin

s := TPath.GetFileNameWithoutExtension(Application.ExeName);
AssignFile(f, s + '-screen.txt');
Rewrite(f);
Writeln (f, s + '.Desktop TLHW: ' + IntToStr(screen.DesktopTop) + ', ' +
                                    IntToStr(screen.DesktopLeft) + ', ' +
                                    IntToStr(screen.DesktopHeight) + ', ' +
                                    IntToStr(screen.DesktopWidth));
CloseFile (f);

aDAM2-screen.txt 显示:aDAM2.Desktop TLHW:0、0、720、1280

aDAM3-screen.txt 显示:aDAM3.Desktop TLHW:0、0、1080、1920

我不明白这是怎么发生的,并且无法解决这个问题,尤其是考虑到 TScreen 属性是只读的。

可能的解释是,一个程序受 DPI virtualization 约束,另一个则不受约束。系统指定了 150% 的字体缩放比例。

真正的分辨率是 1920 x 1080,aDAM3 正在报告,因为它不受 DPI 虚拟化的影响。

另一方面,aDAM2 受 DPI 虚拟化影响,因此报告虚拟尺寸,即真实尺寸除以 1.5。即 1280 x 720。