如何用C# 关闭显示器(监视器)
为了响应国家节约号召,
为国家电力贡献自己的一点微薄之力,
本人决定在吃饭及午休、外出时,
关闭显示器,
同时也延长了笔记本的使用寿命。。
当然在台式机上,直接关闭显示器电源即可。
在笔记本上,利用键盘的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 ); |
详见:http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx
此API在平台调用中,如下签名:
1 2 3 | //C# Signature: [DllImport( "user32.dll" , CharSet = CharSet.Auto)] 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, SC_TASKLIST = 0xF130, SC_SCREENSAVE = 0xF140, SC_HOTKEY = 0xF150, //#if(WINVER >= 0x0400) //Win95 SC_DEFAULT = 0xF160, SC_MONITORPOWER = 0xF170, SC_CONTEXTHELP = 0xF180, SC_SEPARATOR = 0xF00F, //#endif /* WINVER >= 0x0400 */ //#if(WINVER >= 0x0600) //Vista SCF_ISSECURE = 0x00000001, //#endif /* WINVER >= 0x0600 */ /* * Obsolete names */ SC_ICON = SC_MINIMIZE, SC_ZOOM = SC_MAXIMIZE, } |
于是有了下面的调用:
1 2 3 4 5 6 | private const uint WM_SYSCOMMAND = 0x0112; private const uint SC_MONITORPOWER = 0xF170; //关闭 SendMessage( this .Handle,WM_SYSCOMMAND , (IntPtr)SC_MONITORPOWER,2); //打开 SendMessage( this .Handle,WM_SYSCOMMAND , (IntPtr)SC_MONITORPOWER,-1); |
1 | 希望大家在工作之余,可以为社会做点小小的贡献~ |
1 |
1 | 自己做好的小程序,可以锁屏后自动关屏:链接地址如下 |
1 | <a target= "_blank" href= "http://www.cnblogs.com/1971ruru/archive/2010/05/20/1740216.html" >C#实现自动锁屏+关屏</a> |
1 |
作者:一修先生
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 如何不购买域名在云服务器上搭建HTTPS服务