实用小程序——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,一下子就可以一键关闭所有显示器了。
自己写程序为自己服务,虽然没啥技术含量,不过感觉很棒,以后得多为自己写一些小程序了。