zoukankan      html  css  js  c++  java
  • C#关闭显示器

    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);
    }
    }



     
  • 相关阅读:
    Codeforces 1354C2
    Codeforces 1354C1
    Codeforces 1355C
    Codeforces 1353D
    Codeforces 1352
    Codeforces 1351C
    Codeforces 1344B/1345D
    Codeforces 1342D
    Codeforces 1340B/1341D
    Codeforces 1343D
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2254201.html
Copyright © 2011-2022 走看看