实用小程序——C# 关闭显示器

平时工作时,有时候需要用纸笔来验算,或者看书什么的,这时候开着显示器,QQ一闪一闪的,总是分心。

于是我会关闭显示器,按下电源按钮,可我有2个显示器,每次都要关闭2个,比较麻烦,于是我就查找API,希望能一键关闭所有显示器。

原理很简单,就是掉一些Windows api而已,不过并不是没有技术难度的就没有意义,我这样一键关闭显示器,提高了我的效率,而且也省电,省事,很方便。

我这人不喜欢研究很高深的技术,我喜欢简单实用的,以下代码你搞个Console Application就OK了。

class Program
{
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);

static void Main(string[] args)
{
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);
}
}

WM_SYSCOMMAND 参数:http://msdn.microsoft.com/en-us/library/ms646360(VS.85).aspx

SC_MONITORPOWER 参数:http://www.pinvoke.net/default.aspx/Enums/WindowsMessages.html

SendMessage : http://www.pinvoke.net/default.aspx/user32/SendMessage.html

Console Application运行起来那个嘿嘿的窗体很讨厌,只需要在属性里面,改成Windows应用程序就不会有窗体出现了。

编译以后,放个快捷方式到桌面,在属性里面搞个快捷键比如F9,一下子就可以一键关闭所有显示器了。

自己写程序为自己服务,虽然没啥技术含量,不过感觉很棒,以后得多为自己写一些小程序了。

posted @ 2011-03-01 11:44  primeli  阅读(2903)  评论(2编辑  收藏  举报