C#通过热键控制显示器开关的方法
C#通过热键控制显示器开关的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C#通过热键控制显示器开关的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:usingSystem;using...

本文实例讲述了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#程序设计有所帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类