• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#关闭显示器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

        [System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, uint wParam, int IParam);

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

 

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

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

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应用程序就不会有窗体出现了。

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);//广播消息,所有顶级窗体都会接收
  [System.Runtime.InteropServices.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);
}
}



 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#在winform中调用系统控制台输出发布时间:2022-07-13
下一篇:
C#中combobox控件属性、事件、方法发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap