【delphi】判断多显示器下,程序在那个显示器中

Delphi 中,如果你的电脑连接了多个显示器,可以通过以下步骤判断某个程序在哪个显示器上运行。

方法概述:

  1. 获取程序窗口的位置(例如窗体的 LeftTop 坐标)。
  2. 使用 Screen.MonitorFromWindow 函数来确定该窗口所属的显示器。

关键概念:

  • TMonitor :表示一个显示器,包含该显示器的边界(BoundsRect)和工作区域(WorkAreaRect)。
  • Screen.Monitors[]:存储当前连接的所有显示器。
  • MonitorFromWindow:根据窗口句柄获取所属的显示器。

示例代码:

假设我们需要判断当前窗体 Form1 所在的显示器。

Delphi 复制代码
uses
  Winapi.Windows, Vcl.Forms, Vcl.Controls, System.SysUtils;

procedure TForm1.CheckMonitor;
var
  Monitor: TMonitor;
  MonitorIndex: Integer;
begin
  // 获取窗体所在的显示器
  Monitor := Screen.MonitorFromWindow(Self.Handle, mdNearest);

  // 获取显示器的索引
  MonitorIndex := Monitor.MonitorNum;

  // 输出显示器信息
  ShowMessage(Format('The form is running on monitor %d with resolution %dx%d',
    [MonitorIndex, Monitor.BoundsRect.Width, Monitor.BoundsRect.Height]));
end;

解释:

  1. Screen.MonitorFromWindow(Self.Handle, mdNearest) :这是核心函数。Self.Handle 代表窗体句柄,mdNearest 表示如果窗口跨多个显示器,则选择最近的显示器。
  2. Monitor.MonitorNum:获取显示器的索引号。
  3. Monitor.BoundsRect:获取显示器的分辨率和位置。

显示器检测选项:

  • mdNearest:获取最近的显示器。
  • mdPrimary:获取主显示器。

获取当前所有显示器的信息:

如果你想列出所有连接的显示器并获取相关信息,可以通过 Screen.Monitors[] 来完成。

Delphi 复制代码
procedure ListAllMonitors;
var
  I: Integer;
begin
  for I := 0 to Screen.MonitorCount - 1 do
  begin
    ShowMessage(Format('Monitor %d: Resolution = %dx%d, Work Area = %dx%d',
      [I + 1,
      Screen.Monitors[I].BoundsRect.Width,
      Screen.Monitors[I].BoundsRect.Height,
      Screen.Monitors[I].WorkAreaRect.Width,
      Screen.Monitors[I].WorkAreaRect.Height]));
  end;
end;

总结:

  1. 使用 Screen.MonitorFromWindow 判断当前窗口运行在哪个显示器上。
  2. 通过 Screen.Monitors[] 获取所有显示器的信息。
相关推荐
shandianchengzi11 小时前
【记录】联想|Thinkpad雷电接口连接带鱼屏显示器,画面被异常拉伸怎么解决?
windows·计算机外设·显示器·联想·thinkpad
俊哥工具15 小时前
解决网速卡顿、断网、网络报错,万能网络修复工具教程
网络·python·django·计算机外设·智能路由器·pygame
nashane2 天前
HarmonyOS 6学习:外接键盘CapsLock键“失灵”?一招解锁大写输入
学习·华为·计算机外设·harmonyos
HezhezhiyuLe2 天前
无界内嵌编辑器键盘事件失效
编辑器·计算机外设
酉鬼女又兒2 天前
零基础入门计算机组成原理:控制器章节全考点汇总 | 寄存器 + 控制存储器 + 微指令
考研·职场和发展·计算机外设
沃普天科技2 天前
USB显示器驱动板触摸收款机显示器收银机点菜机广告机
驱动开发·游戏·计算机外设·电脑·ar·音视频·硬件工程
卢锡荣2 天前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
feifeigo1232 天前
STM32矩阵键盘驱动(库函数版)实现
stm32·矩阵·计算机外设
是大强3 天前
定位桌面鼠标所在位置
计算机外设
龚礼鹏3 天前
优化android14低内存设备连接蓝牙键盘/鼠标后点击Disconnect断开蓝牙连接,页面卡顿(将1180ms优化到629ms)
计算机外设