国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#通過熱鍵控制顯示器開關的方法

2020-01-24 02:13:15
字體:
來源:轉載
供稿:網友

本文實例講述了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
        {
            // 如果函數執(zhí)行成功,返回值不為0。
            // 如果函數執(zhí)行失敗,返回值為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
                   );

            // 定義了輔助鍵的名稱(將數字轉變?yōu)樽址员阌谟洃?,也可去除此枚舉而直接使用數值)
            [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#程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汕头市| 寿光市| 湘潭县| 临西县| 福海县| 柳林县| 新宾| 五河县| 侯马市| 绩溪县| 保德县| 新巴尔虎右旗| 马关县| 得荣县| 安泽县| 蓝田县| 钟山县| 西华县| 汾西县| 汉川市| 顺义区| 新密市| 襄垣县| 瑞金市| 陆良县| 仲巴县| 道真| 安西县| 昭苏县| 儋州市| 张掖市| 灵寿县| 兰考县| 荃湾区| 桐梓县| 珲春市| 泸溪县| 宁津县| 湖北省| 盖州市| 昌黎县|