我的问题是,当主监视器百分比为150%,第二个监视器百分比为100%时,以及当我开始我的项目并将窗口从1切换到2时,我不知道如何获得正确的DPI。当切换窗口状态时,我得到了DPI,但我尝试了,但DPI是标准144不变。 这是我的代码: public static void GetDpi(this System.Windows.Forms.Screen screen, DpiType dpiType, out uint dpiX, out uint dpiY)
{
var pnt = new System.Drawing.Point(screen.Bounds.Left + 1, scre
我在我的WinForms应用程序中使用来自user32.dll的SetProcessDPIAware()函数。在调用SetProcessDPIAware()之后,我需要返回到以前对该进程的DPI感知。 我读了Setting the default DPI awareness for a process这篇文章。SetProcessDpiAwareness()和SetProcessDpiAwarenessContext()不能在Windows7或Windows Vista上运行。 如何在为进程调用SetProcessDPIAware()后恢复到以前对该进程的DPI感知?
这是的后续问题。
Windows 10允许对DPI进行运行时更改,而无需重新启动系统(登录/注销)。当DPI被更改,并且系统检测到应用程序无法处理运行时DPI更改时,它会按像素大小缩放应用程序窗口。与以前版本的Windows中所看到的兼容性行为相似的是什么。除了在这种情况下,系统甚至可以缩小,而不仅仅是上升。
奇怪的是,重新启动应用程序不会有帮助。系统似乎记得,应用程序没有对缩放的变化做出正确的响应,并且仍然像以前一样运行(应用程序认为缩放没有改变,系统按像素缩放)。只有系统登录/注销才能帮助重置到正确的缩放。
是否有一种以编程方式重置兼容性模式的方法,允许用户仅重新启动应用程序,而不是整个系
我有一个Delphi 3应用程序,它已经广泛分布了至少十年。今天,我收到一份报告,称该应用程序在华硕变压器T100TA-C1-GR(S) Windows 8平板电脑上没有正常工作。具体来说,该应用程序拒绝运行,因为它检测到的屏幕分辨率太小,应用程序无法正常显示自己。在这个应用程序中,我有以下条件检查:
if (Screen.Width < 800) or (Screen.Height < 600) then begin
// display a message reporting screen resolution too low
ShowMessage('