gpt4 book ai didi

delphi - Delphi中如何获取屏幕的可用坐标

转载 作者:行者123 更新时间:2023-12-03 14:44:44 25 4
gpt4 key购买 nike

通过 Screen.DesktopHeight 和 Screen.DesktopWidth,我可以获得“虚拟”桌面的大小,并且我相信这适用于一台或多台显示器。

当应用程序关闭时,我将应用程序的位置(顶部和左侧)和大小(高度和宽度)保存到注册表中。当它打开时,我想确保它完全可见,因为它可能已部分移动到可见区域之外,或者屏幕尺寸可能已更改,例如通过屏幕设置或删除监视器。

我基本上可以用这段代码做到这一点:

if MyForm.Width > screen.DesktopWidth then 
MyForm.Width := screen.DesktopWidth;

if MyForm.Height > screen.DesktopHeight then
MyForm.Height := screen.DesktopHeight;

if (MyForm.Left + MyForm.Width) > screen.DesktopWidth then
MyForm.Left := screen.DesktopWidth - MyForm.Width;
if MyForm.Left < 0 then MyForm.Left := 0;

if (MyForm.Top + LogoAppForm.Height) > screen.DesktopHeight then
MyForm.Top := screen.DesktopHeight - LogoAppForm.Height;
if MyForm.Top < 0 then MyFormTop := 0;

这工作正常,只是它没有考虑通常(但不总是)位于桌面底部的任务栏。因此,如果任务栏挡住了我的应用程序窗口,我的应用程序就会被遮挡。

如何获取不包括任务栏位置的屏幕可用位置和大小设置?

最佳答案

我不确定 Windows 是否真的按照您想象的方式工作 - 我有多个显示器,但它们的高度不同 - 因此我的桌面在所有显示器上的高度并不相同。

我所做的是使用 Screen.MonitorCount 和 Screen.Monitors 数组来计算出哪个监视器包含大部分窗口,然后在该屏幕上找到合适的矩形。 TMonitor 的 WorkareaRect 属性为您提供特定监视器上工作区域的边界,其中不包括任何任务栏或工具栏。

关于delphi - Delphi中如何获取屏幕的可用坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com