delphi 判断多显示器下,程序在那个显示器中  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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


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


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


方法概述:

获取程序窗口的位置(例如窗体的 Left、Top 坐标)。

使用 Screen.MonitorFromWindow 函数来确定该窗口所属的显示器。

关键概念:

TMonitor:表示一个显示器,包含该显示器的边界(BoundsRect)和工作区域(WorkAreaRect)。

Screen.Monitors[]:存储当前连接的所有显示器。

MonitorFromWindow:根据窗口句柄获取所属的显示器。

示例代码:

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


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;

解释:

Screen.MonitorFromWindow(Self.Handle, mdNearest):这是核心函数。Self.Handle 代表窗体句柄,mdNearest 表示如果窗口跨多个显示器,则选择最近的显示器。

Monitor.MonitorNum:获取显示器的索引号。

Monitor.BoundsRect:获取显示器的分辨率和位置。

显示器检测选项:

mdNearest:获取最近的显示器。

mdPrimary:获取主显示器。

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

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


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;

总结:

使用 Screen.MonitorFromWindow 判断当前窗口运行在哪个显示器上。

通过 Screen.Monitors[] 获取所有显示器的信息。

————————————————

          

原文链接:https://blog.csdn.net/sensor_WU/article/details/142092796



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.050208806991577 seconds