首页 > 编程语言 >【delphi】判断多显示器下,程序在那个显示器中

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

时间:2024-09-10 12:21:27浏览次数:13  
标签:BoundsRect Monitor delphi 显示器 程序 获取 Screen Monitors

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

方法概述:

  1. 获取程序窗口的位置(例如窗体的 LeftTop 坐标)。
  2. 使用 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;

解释:

  1. Screen.MonitorFromWindow(Self.Handle, mdNearest):这是核心函数。Self.Handle 代表窗体句柄,mdNearest 表示如果窗口跨多个显示器,则选择最近的显示器。
  2. Monitor.MonitorNum:获取显示器的索引号。
  3. 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;

总结:

  1. 使用 Screen.MonitorFromWindow 判断当前窗口运行在哪个显示器上。
  2. 通过 Screen.Monitors[] 获取所有显示器的信息。

标签:BoundsRect,Monitor,delphi,显示器,程序,获取,Screen,Monitors
From: https://blog.csdn.net/sensor_WU/article/details/142092796

相关文章

  • 2024企业站群搜狗秒收录站群程序二开版--码山侠
    在SEO领域,站群策略是一种通过构建多个网站来提高搜索引擎排名和增加流量的方法。百度快排玩法,特别是针对搜狗搜索引擎的秒收录站群程序,是许多SEO从业者关注的焦点。以下是对这种策略的深度解析。站群策略的核心站群策略的核心在于构建多个网站,这些网站通常围绕同一主题或相关......
  • 2024最新专用站群seo官网程序源码二级泛程序——码山侠
    发布站专用站群seo推广网站源码·支持泛解析无限扩张功能:打开i5i.net1、支持伪静态功能,减少生成静态页增加网站内容,比动态网站更有利于网站收录。2、支持seo优化效果,主动提交某百收录,可生成sitemap.xml文件提交某百减少网站收录时间。3、网站简洁大气,占用内存小,访问速度极快......
  • 计算机毕业设计必看必学!!11959 springboot校企对接实习管理系统,原创定制程序, java、
    摘 要校企合作实习是一种重要的实践教学模式,但是在实际的推行过程中,存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展,应用web技术开发B/s模式的实习管理系统,根据用户需求,......
  • 计算机毕业设计必看必学!! 88705 SpringBoot社区配送服务系统小程序,原创定制程序, jav
    摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区当然也不例外。社区配送服务系统小程序是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......
  • 计算机毕业设计必看必学!!12222 springboo儿童疫苗预约系统 ,原创定制程序, java、PHP
    摘  要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。儿童疫苗预约管理,主要的模块包括查看首页、站点管理(轮播图、公告栏)用户管理(管理员、系统用户)内容管理(资讯列表、分类列表)更多管理(预约订单、疫苗信息、......
  • 计算机毕业设计必看必学!!11819 ssm球鞋资讯交流平台,原创定制程序, java、PHP、python
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,球鞋资讯交流平台当然也不能排除在外。球鞋资讯交流平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理平台。整个开发过程......
  • 计算机毕业设计必看必学!! 11779 猪场管理系统的设计与实现,原创定制程序, java、PHP、
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对猪场管理系统等问题,对猪场管理系统进行研究分析,然后开发设计出猪场管理系统以解决问题。猪......
  • Winform C# 窗体应用程序简单入门
    搬运来源:https://blog.csdn.net/weixin_46262993/article/details/104169982?spm=1001.2014.3001.5502一、什么是Winform?WinForm是WindowsForm的简称,是基于.NETFramework平台的客户端(PC软件)开发技术,一般使用C#编程。C#WinForm编程需要创建「Windows窗体应用程序」项目......
  • Taro 小程序父组件基于Class如何拿到子组件基于Hooks的实例对象
    如果父组件不是基于Hooks写法(类组件),而子组件是基于Hooks写法(函数组件),你依然可以通过ref访问子组件中的方法或状态。为此,你需要使用forwardRef和useImperativeHandle在子组件中自定义要暴露的内容。具体步骤在子组件中使用forwardRef将ref传递给它。在子组件中使......
  • 基于微信小程序的酒店管理系统设计与实现毕业设计-附源码
    酒店管理源码|酒店管理系统|酒店管理小程序|酒店管理系统源码基于微信小程序开发的酒店管理系统管理员,酒店管理员以及用户。管理员功能可以管理个人中心,用户信息管理,酒店管理员管理,房间类型管理,房间信息管理,订单信息管理,系统管理等。用户可以预定酒店。因而具有一定的实用性。......