C#通过热键控制显示器开关的方法

本文实例讲述了C#通过热键控制显示器开关的方法。分享给大家供大家参考。

具体实现方法如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace OpenMonitor {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();             HotKey.RegisterHotKey(this.Handle, 100, 0, Keys.F4);             HotKey.RegisterHotKey(this.Handle,101,0,Keys.F5);         }

        class HotKey         {             // 如果函数执行成功,返回值不为0。             // 如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。             [DllImport("user32.dll  ", SetLastError = true)]             public static extern bool RegisterHotKey(                    IntPtr hWnd, // 要定义热键的窗口的句柄                     int id,    // 定义热键ID(不能与其它ID重复)                      KeyModifiers fsModifiers, // 标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效                    Keys vk    // 定义热键的内容                    );

            [DllImport("user32.dll  ", SetLastError = true)]             public static extern bool UnregisterHotKey(                    IntPtr hWnd,  // 要取消热键的窗口的句柄                     int id      // 要取消热键的ID                    );

            // 定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)             [Flags()]             public enum KeyModifiers             {                 None = 0,                 Alt = 1,                 Ctrl = 2,                 Shift = 4,                 WindowsKey = 8             }         }

        protected override void WndProc(ref    Message m)         {             const int WM_HOTKEY = 0x0312;             // 按快捷键               switch (m.Msg)             {                 case WM_HOTKEY:                     switch (m.WParam.ToInt32())                     {                         case 100:                             MonitorHelper.TurnOn();                             break;                         case 101:                             MonitorHelper.TurnOff();                             break;                     }                     break;             }             base.WndProc(ref    m);         }

        class MonitorHelper         {             public static void TurnOn()             {                 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);             }

            public static void TurnOff()             {                 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);             }

            [DllImport("user32.dll")]             public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

            private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);             private const uint WM_SYSCOMMAND = 0x0112;             private const int SC_MONITORPOWER = 0xf170;         }     } }

希望本文所述对大家的C#程序设计有所帮助。