C#通过热键控制显示器开关的方法

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

(0)

相关推荐

  • C#实现自定义windows系统日志的方法

    本文实例讲述了C#实现自定义windows系统日志的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApp { /// <summary> /// 系统日志 /// </summary> public class PackSys

  • c#使用热键实现程序窗口隐藏示例

    复制代码 代码如下: using System; using System.Text; using System.Collections; using System.Runtime.InteropServices; namespace WindowHider {     /// <summary>     /// Object used to control a Windows Form.     /// </summary>     public class Window    

  • C#编程实现自定义热键的方法

    本文实例讲述了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.Drawing.Im

  • 深入理解C#实现快捷键(系统热键)响应的方法

    在应用中,我们可能会需要实现像Ctrl+C复制.Ctrl+V粘贴这样的快捷键,本文简单介绍了它的实现,并给出了一个实现类.(1)建立一个类文件,命名为HotKey.cs,代码如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Runtime.InteropServices;using System.Windows.Forms;namespace KoalaStudio.BookshopManager{

  • C# 系统热键注册实现代码

    先引用using System.Runtime.InteropServices; 的命名空间, 然后在合适的位置加上如下代码就OK..注意:Form1_Load和Form1_FormClosed不能直接copy哦- 复制代码 代码如下: [DllImport("user32")] public static extern bool RegisterHotKey(IntPtr hWnd,int id,uint control,Keys vk ); //注册热键的api [DllImpor

  • C#全局热键设置与窗体热键设置实例

    本文实例讲述了C#全局热键设置与窗体热键设置,分享给大家供大家参考.具体实现方法如下: 1.窗体热键 首先要设置主窗体KeyPreview为true,可直接在属性中进行设置, 或者在窗体加载中设置: this.KeyPreview = true; 然后添加窗体KeyDown事件,如下: 复制代码 代码如下: private void FrmMain_KeyDown(object sender, KeyEventArgs e) {     if (e.Alt && e.Shift &

  • C#自定义签名章实现方法

    本文实例讲述了C#自定义签名章实现方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; namespace WfpApp { public class DrawCac

  • C#自定义类型强制转换实例分析

    本文实例讲述了C#自定义类型强制转换的用法.分享给大家供大家参考.具体分析如下: 先来举一个小例子 类定义: public class MyCurrency { public uint Dollars; public ushort Cents; public MyCurrency(uint dollars, ushort cents) { this.Dollars = dollars; this.Cents = cents; } public override string ToString()

  • C#自定义事件及用法实例

    本文实例讲述了C#自定义事件及用法.分享给大家供大家参考.具体分析如下: 事件是C#中一个重要的内容,MSDN上有一个自定义事件的演示示例.我看了半天有点晕,所以新建了一个winform工程添加了一个按钮,然后找出调用的程序,一对比做了一个类似的示例,就明白了.看代码有时候比看文档来得更快. 所以还是一贯的原则,来干的,不来稀的. using System; namespace TestEventArgs { /// <summary> /// 这个类对应于EventArgs,做对比学习. /

  • C#通过热键控制显示器开关的方法

    本文实例讲述了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 Sys

  • layui--js控制switch的切换方法

    需求:如下所示,当[主键]选择为"T"时,[允许为空]不能选择"T",且会自动切换为"F"; 当[允许为空]选择为"T"时,判断[主键]是否为空,若为"T",弹出提示,不予更改: 首先需要在table中添加switch控件: 定义主键:以templet模板形式定义控件格式,其中{{ d.isSerial == 'T' ? 'checked' : '' }}为其设置默认值 {field :'isSerial'

  • 使用jsp:include控制动态内容的方法

    本文实例讲述了使用jsp:include控制动态内容的方法.分享给大家供大家参考,具体如下: 清单 1. JSP include 伪指令 <![CDATA[ <%@ page language="java" contentType="text/html" %> <html> <head> <title>newInstance.com</title> <meta http-equiv="

  • js用拖动滑块来控制图片大小的方法

    本文实例讲述了js用拖动滑块来控制图片大小的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv=Content-Type content="text/html;charset=gb2312"> <title&g

  • java线程池:获取运行线程数并控制线程启动速度的方法

    在java里, 我们可以使用Executors.newFixedThreadPool 来创建线程池, 然后就可以不停的创建新任务,并用线程池来执行了. 在提交任务时,如果线程池已经被占满,任务会进到一个队列里等待执行. 这种机制在一些特定情况下会有些问题.今天我就遇到一种情况:创建线程比线程执行的速度要快的多,而且单个线程占用的内存又多,所以很快内存就爆了. 想了一个办法,就是在提交任务之前,先检查目前正在执行的线程数目,只有没把线程池占满的时候在去提交任务. 代码很简单: int thread

  • JS控制伪元素的方法汇总

    一. 缘由: 本文源于在OSC社区中,有人提问如何用jq获取伪元素.我第一想法是强大的CSS Query应该可以获取伪元素吧. 然而事实上,CSS Query并不能.即我们不能通过$(":before").$(dom).find(":before")或document.querySelector(":before")来获取:before伪元素. 为此,我不得不重新了解伪元素(Pseudo-elements).为什么不能用JS直接获取伪元素呢? 譬

  • php控制文件下载速度的方法

    本文实例讲述了php控制文件下载速度的方法.分享给大家供大家参考.具体实现方法如下: <?php /* * set here a limit of downloading rate (e.g. 10.20 Kb/s) */ $download_rate = 10.20; $download_file = 'download-file.zip'; $target_file = 'target-file.zip'; if(file_exists($download_file)){ /* header

  • Js实现网页键盘控制翻页的方法

    本文实例讲述了Js实现网页键盘控制翻页的方法.分享给大家供大家参考.具体实现方法如下: 键盘控制翻页效果我想我们不少见了,经常在很多网站特别是相册的效果都可以直接使用键盘进行上下页进行翻页了,原理很简单,只要利用js监测用户是否有按上下键即可实现. 举例如下: 复制代码 代码如下: <a id="last" href="<?=$lefturl?>">上一章</a> <a id="booklist" hre

  • js实现键盘控制DIV移动的方法

    本文实例讲述了js实现键盘控制DIV移动的方法.分享给大家供大家参考.具体分析如下: css样式部分: 复制代码 代码如下: <style type="text/css"> html,body{overflow:hidden;} body{margin:0;padding:0;} pre{color:green;padding:10px 15px;background:#f0f0f0;border:1px dotted #333;font:12px/1.5 Courier

  • VC实现Windows多显示器编程的方法

    本文实例讲述了VC实现Windows多显示器编程的方法.分享给大家供大家参考.具体如下: 一.Windows中接入多个显示器时,可设置为复制和扩展屏. 1.设置为复制屏幕时,多个显示器的分辨率是一样的,位置为0~分辨率值 2.设置为扩展屏幕时,显示器之间的关系比较复杂些.首先Windows系统会识别一个主显示器,这个可以在屏幕分辨率中更改.多个显示器之间的位置关系也可以再屏幕分辨率中更改.其中主显示器的位置为(0,0)到(width,height),其他显示器位置由与主显示器的位置关系决定,在主

随机推荐