3个显示器,想分别控制,开启,和关闭

zxvyio 2016-06-01 09:40:01
有3个显示器,想自己分别控制1,2,3,的显示器开启和关闭,请问要怎么实现,现在就只能实现全部显示器同时关闭,动一动鼠标就全开启,实现不了,3个分开控制。



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace 关闭显示器
{
public partial class 关闭显示器 : Form
{
public 关闭显示器()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private const uint WM_SYSCOMMAND = 0x112; //系统消息
private const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令
private const int MonitorPowerOff = 2; //2为PowerOff, 1为省电状态,-1为开机
private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);//广播消息,所有顶级窗体都会接收

[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);


private void button1_Click(object sender, EventArgs e)
{
//button1.Text = Screen.FromHandle();
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);

}

}
}


...全文
274 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxvyio 2016-06-13
  • 打赏
  • 举报
回复
自顶,自顶
zxvyio 2016-06-06
  • 打赏
  • 举报
回复
顶贴
puler 2016-06-02
  • 打赏
  • 举报
回复
感觉思路应该是:改变系统的显示器扩展设置
zxvyio 2016-06-02
  • 打赏
  • 举报
回复
找了一通,找到下面这些,网上这控制2屏以上很少有资料,没找着

利用WinForm中的Screen类,即可比较方便地实现多窗体分别在多个屏幕上显示。

    获取当前系统连接的屏幕数量: Screen.AllScreens.Count();
    获取当前屏幕的名称:string CurrentScreenName = Screen.FromControl(this).DeviceName;
    获取当前屏幕对象:Screen CurrentScreen = Screen.FromControl(this);
    获取当前鼠标所在的屏幕:Screen CurrentScreen = Screen.FromPoint(new Point(Cursor.Position.X, Cursor.Position.Y));
    让窗体在第2个屏幕上显示:

     this.Left = ((Screen.AllScreens[1].Bounds.Width - this.Width) / 2);
     this.Top = ((Screen.AllScreens[1].Bounds.Height - this.Height) / 2);

把任何窗体显示在任何屏幕的方法:
引用 1 楼 guonan198811 的回复:
...
zxvyio 2016-06-02
  • 打赏
  • 举报
回复
引用 3 楼 puler 的回复:
。。
不清楚,这个全关闭的代码有一点不怎么好,就是鼠标微小的一动就会又开启显示器,有什么辨法能降低灵敏度,或者直接改成只按健盘才能打开显示器!
南天空 2016-06-01
  • 打赏
  • 举报
回复
你发的是广播指令,当然是全部开启和关闭,想办法搞到单个显示的识别号,应该是一个类似ID或者句柄的东西,单个发送poweroff或者on的指令。我没研究过win32的函数库里有没有类似的函数。如果是厂家给的SDK应该会有想换的控制函数。找到那个能替代HWND_BROADCAST的参数

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧