移动窗口,将其他程序移动到副显示屏

一般程序启动时会默认显示在主显示屏,当多个程序启动运行后,会有相互遮挡的情况;

当有两个显示屏的时候,可以使用程序将其中的一些程序移动至副显示屏中显示;

移动程序设置开机自启,即可实现开机移动窗口。

1.找出当前桌面显示的所有窗口

2.匹配窗口的标题或者其他属性

3.获取显示屏的属性,区分主显示屏和副显示屏

4.计算副显示屏的坐标

5.移动窗口,并设置显示大小

 Console.WriteLine("开始查找窗口");
 var windows = WindowEnumerator.FindAll();
 Console.WriteLine("找到窗口:"+windows.Count);
 for (int i = 0; i < windows.Count; i++)
 {
     var window = windows[i];
     Console.WriteLine($@"{i.ToString().PadLeft(3, ' ')}. {window.Title} {window.Bounds.X}, {window.Bounds.Y}, {window.Bounds.Width}, {window.Bounds.Height}");
     if (window.IsVisible && window.Title == "运行界面")
     {
         Screen[] screens = Screen.AllScreens;//获取当前所有显示屏
         Screen screenCurrent = Screen.PrimaryScreen;//获取主显示屏
         Screen otherScreen = null;
         //int count = screens.Count();
         foreach (var item in screens)
         {
             if (item.DeviceName != screenCurrent.DeviceName)
             {
                 //获取到副显示屏,因为机器只有两个显示屏,所以此处这么处理,如果是多显示屏的话,可能要对属性值进行判断
                 otherScreen = item;
             }
         }
         if (otherScreen != null)
         {
             //计算副屏幕零点
             int X0 = otherScreen.Bounds.X - screenCurrent.Bounds.X;
             int Y0 = otherScreen.Bounds.Y - screenCurrent.Bounds.Y;
             //算出中心位置的偏移量
             int w = (otherScreen.Bounds.Width - window.Bounds.Width) / 2;
             int h = (otherScreen.Bounds.Height - window.Bounds.Height) / 2;
             //得出实际的坐标点
             int x = X0 + w;
             int y = Y0 + h;
             //移动窗口
             MoveWindow(window.Hwnd, x, y, window.Bounds.Width, window.Bounds.Height, true);
             return;
         }
     }
     //Console.WriteLine($@"{i.ToString().PadLeft(3, ' ')}. {window.Title} {window.Bounds.X}, {window.Bounds.Y}, {window.Bounds.Width}, {window.Bounds.Height}");
 }

项目代码下载:

https://download.csdn.net/download/rotion135/88278065

开机自启的功能:

https://download.csdn.net/download/rotion135/88278073

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rotion_深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值