windows - 我如何确定应用程序在哪个屏幕/监视器上运行?

标签 windows delphi delphi-2007 multiscreen

在多屏系统上,我希望我的一些应用程序能够记住它们上次在哪个屏幕上运行并再次在同一屏幕上运行。

如何确定当前屏幕/显示器是什么,同时记住屏幕可能具有不同的分辨率?这些程序是用 Delphi 2007 编写的。

最佳答案

VCL 公开此信息,例如通过表单的 Monitor属性(property)。这是类型 TMonitor它公开了监视器的各种属性:它的编号、它是否是主监视器、它的边界和工作区域等等。

不过,您要做的只是将表单恢复到之前运行的位置。我认为您不需要记住监视器信息。只需执行以下操作:

  1. 当应用程序关闭时记住它的边界矩形。
  2. 当应用程序启动时,将其 bounds rect 设置为已记住的值。
  3. 检查表单是否包含在屏幕的矩形边界内。如果表单不在屏幕上,则可能是用户移除了显示器或以其他方式重新排列了他们的屏幕。将表单移到最近的监视器或主监视器上。
  4. 如果窗口可以最大化,则需要额外的细微差别。在这种情况下,请记住 bounds rect 以及应用程序是否最大化。您的 friend 是 GetWindowPlacementSetWindowPlacement

关于windows - 我如何确定应用程序在哪个屏幕/监视器上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107157/

相关文章:

windows - 将 TortoiseHg 移植为使用 Git 是否容易?

java - 什么可以使 Java 应用程序平台依赖?

Delphi - 泛型类型检查是否已创建

delphi - 如何在Delphi中实现将文件名从资源管理器拖到托管表单或控件中

delphi - 如何将delphi窗体的宽度和高度像素转换为对话框单位?

delphi - 如何批量将 bdsproj 转换为 dproj?

windows - 如何将地址框文本转换为地理经纬度。在 wp7

java - 在 Windows 上设置 Java 进程名称

delphi - 用 for in construction 创建的 Enumerator 是如何被销毁的?

delphi - 已发布的接口(interface)属性错误和解决方法