频道栏目
首页 > 程序开发 > 软件开发 > C# > 正文
如何用C# 关闭显示器(监视器)
2010-07-11 14:34:50           
收藏   我要投稿

为了响应国家节约号召,

为国家电力贡献自己的一点微薄之力,

本人决定在吃饭及午休、外出时,

关闭显示器,

同时也延长了笔记本的使用寿命。。

当然在台式机上,直接关闭显示器电源即可。

在笔记本上,利用键盘的FN快捷键,只能关闭屏幕背光,

不能关掉主板给屏幕的信号输出。仔细看仍然会看到暗淡的桌面。

本人建议:各位不要经常性的让笔记本待机。。对硬盘影响很大的。。。

在桌面显示属性的“电源管理”里面,我们可以调整电源方案,

设置计算机在X分钟后关闭监视器,硬盘,待机。等等。。。

 

命令行为:

powercfg /change "电源方案名称" /moniter-timeout-ac 1

 

这个比较麻烦,还需知道当前使用的电源方案。

 

不过,windows为我们提供了一个API。可以实现即时关闭监视器。

 

LRESULT WINAPI SendMessage(

  __in  HWND hWnd,

  __in  UINT Msg,

  __in  WPARAM wParam,

  __in  LPARAM lParam

);

 

详见:aspx">http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

 

此API在平台调用中,如下签名:

1 //C# Signature:

2 [DllImport("user32.dll", CharSet = CharSet.Auto)]

3 static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

此方法的各个参数类型有一些重载,一般还是建议用IntPtr,否则,在64位平台OR其它情况下可能会崩溃~

 

我们需要传给Msg 一个系统消息,即:WM_SYSCOMMAND

然后是附加信息,比如屏幕保护:SC_SCREENSAVE,监视器电源:SC_MONITORPOWER

WM_SYSCOMMAND有如下取值:

enum SysCommands : int 

{

     SC_SIZE     = 0xF000,

     SC_MOVE     = 0xF010,

     SC_MINIMIZE     = 0xF020,

     SC_MAXIMIZE     = 0xF030,

     SC_NEXTWINDOW   = 0xF040,

     SC_PREVWINDOW   = 0xF050,

     SC_CLOSE    = 0xF060,

     SC_VSCROLL      = 0xF070,

     SC_HSCROLL      = 0xF080,

     SC_MOUSEMENU    = 0xF090,

     SC_KEYMENU      = 0xF100,

     SC_ARRANGE      = 0xF110,

     SC_RESTORE      = 0xF120,

点击复制链接 与好友分享!回本站首页
相关TAG标签 监视器 显示器
上一篇:c#注册全局快捷键
下一篇:C#定时任务采用线程和队列实现
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站