C means to control the switch of the display by hotkeys

  • 2020-12-13 19:03:07
  • OfStack

This article illustrates how C# controls the switch of the display by hotkeys. Share to everybody for everybody reference.

Specific implementation methods are as follows:

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
        {
            // If the function executes successfully, the return value is not 0 .
            // If the function fails, the return value is 0 . To get the extension error message, call GetLastError .
            [DllImport("user32.dll  ", SetLastError = true)]
            public static extern bool RegisterHotKey(
                   IntPtr hWnd, // Handle to the window to define the hotkey
                    int id,    // Define hotkeys ID (Not with others ID Repeated)   
                   KeyModifiers fsModifiers, // Identifies whether the hotkey is being pressed Alt , Ctrl , Shift , Windows It doesn't take effect until you wait for the key
                   Keys vk    // Define the contents of the hotkey
                   );             [DllImport("user32.dll  ", SetLastError = true)]
            public static extern bool UnregisterHotKey(
                   IntPtr hWnd,  // Handle to the window to cancel the hotkey
                    int id      // You want to cancel hotkeys ID
                   );             // Defines the name of the secondary key (converts a number to a character for memorization, or uses a numeric value instead of an enumeration)
            [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;
            // According to the shortcut key   
            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;
        }
    }
}

Hopefully this article has helped you with your C# programming.


Related articles: