yw3579293 发表于 2013-7-5 18:15:52

C# 自动关闭或打开显示器

本帖最后由 威廉乔克斯 于 2013-7-9 22:08 编辑

C# Code:
/// <summary>
/// 监视器开关控制
/// </summary>
public class MonitorTool
{
   
   public static extern IntPtr SendMessage(
   IntPtr hWnd,
   uint msg,
   uint wParam,
   int lParam);
   
   //系统消息
   private const uint WM_SYSCOMMAND = 0x112;
   
   //关闭显示器的系统命令
   private const int SC_MONITORPOWER = 0xF170;
   
   //2为PowerOff, 1为省电状态,-1为开机
   private const int MonitorPowerOff = 2;
   
   /// <summary>
   /// 关闭显示器
   /// </summary>
   public static void PowerOff(IntPtr hWnd)
   {
      SendMessage(
      hWnd,
      WM_SYSCOMMAND,
      SC_MONITORPOWER,
      2
      );
   }
   
   /// <summary>
   /// 打开显示器
   /// </summary>
   public static void PowerOn(IntPtr hWnd)
   {
      SendMessage(
      hWnd,
      WM_SYSCOMMAND,
      SC_MONITORPOWER,
      -1
      );
   }
   
}测试:


C# Code:private void button2_Click(object sender, EventArgs e)
{
   MonitorTool.PowerOff(this.Handle);
   Thread.Sleep(3000);//三秒后自动打开显示器
   MonitorTool.PowerOn(this.Handle);
}

羽叶 发表于 2013-7-5 18:17:16

没试过,可行吗?

yw3579293 发表于 2013-7-5 18:18:07

天堂羽叶 发表于 2013-7-5 18:17
没试过,可行吗?

可以的。这个我自己都在用的

nyfor 发表于 2013-7-8 13:05:58

嗯,不错,试过了,可以用
另外, 发送消息的窗口句柄可以传入 -1, 我在Console 程序中可用.

MonitorTool.PowerOff((System.IntPtr)(-1));

yw3579293 发表于 2013-7-8 15:23:32

nyfor 发表于 2013-7-8 13:05
嗯,不错,试过了,可以用
另外, 发送消息的窗口句柄可以传入 -1, 我在Console 程序中可用.



{:3_48:}{:3_48:}{:3_48:}{:3_48:}{:3_48:}{:3_48:}

cgc20xin 发表于 2013-7-9 18:36:02

真心不错
哈哈

威廉乔克斯 发表于 2013-7-9 22:05:31

这个好,我喜欢,前段日子。还想着有没好方法可以实现。

tjs 发表于 2013-7-13 09:58:08

不错,可以用.

wfrancis 发表于 2013-9-20 07:25:27

这个主要用来干啥?。。。。

pbuilder 发表于 2013-9-20 10:25:59

好像可以用来挂机,不用别人开,自己再搞外钩子,
设定下按下某些键才开显示器.

wanjust 发表于 2013-10-16 10:36:01

谢谢.....^^

panyijun 发表于 2013-10-16 13:41:56

有人试过吗 这个可行吗

chanlei001 发表于 2015-10-17 11:01:35

不错,学习了

bendandan 发表于 2015-12-9 11:14:08

好厉害的代码
页: [1]
查看完整版本: C# 自动关闭或打开显示器