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.