C#通過(guò)熱鍵控制顯示器開(kāi)關(guān)的方法
本文實(shí)例講述了C#通過(guò)熱鍵控制顯示器開(kāi)關(guān)的方法。分享給大家供大家參考。
具體實(shí)現(xiàn)方法如下:
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
{
// 如果函數(shù)執(zhí)行成功,返回值不為0。
// 如果函數(shù)執(zhí)行失敗,返回值為0。要得到擴(kuò)展錯(cuò)誤信息,調(diào)用GetLastError。
[DllImport("user32.dll ", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, // 要定義熱鍵的窗口的句柄
int id, // 定義熱鍵ID(不能與其它ID重復(fù))
KeyModifiers fsModifiers, // 標(biāo)識(shí)熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時(shí)才會(huì)生效
Keys vk // 定義熱鍵的內(nèi)容
);
[DllImport("user32.dll ", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, // 要取消熱鍵的窗口的句柄
int id // 要取消熱鍵的ID
);
// 定義了輔助鍵的名稱(將數(shù)字轉(zhuǎn)變?yōu)樽址员阌谟洃?,也可去除此枚舉而直接使用數(shù)值)
[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;
}
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn)
這篇文章主要介紹了C# 9.0 新特性之模式匹配簡(jiǎn)化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例
這篇文章主要介紹了C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例,即對(duì)System.IO命名空間中類的運(yùn)用,需要的朋友可以參考下2016-02-02C#中判斷、驗(yàn)證字符串是否為日期格式的實(shí)現(xiàn)代碼
這篇文章主要介紹了C#中判斷、驗(yàn)證字符串是否為日期格式的實(shí)現(xiàn)代碼,使用DateTime類中自帶的兩個(gè)方法實(shí)現(xiàn),需要的朋友可以參考下2014-08-08C#使用OpenCvSharp實(shí)現(xiàn)圖像校正
這篇文章主要為大家詳細(xì)介紹了C#如何使用OpenCvSharp實(shí)現(xiàn)圖像校正功能,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考下2023-11-11C#中FlagsAttribute屬性在enum中的應(yīng)用詳解
這篇文章主要介紹了C#中FlagsAttribute屬性在enum中的應(yīng)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10