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;
        }
    }
}

时间: 2024-10-07 13:03:12

C# 通过热键控制显示器开关的相关文章

ios开发 如何在应用内获取当前周围wifi列表和强度 并实现在应用内控制wifi开关

通过官方的API 可以获取到wifi的信息,实现代码: 1 2 3 4 5 6 7 8 9 10 11 - (id)fetchSSIDInfo {       NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();       NSLog(@"Supported interfaces: %@", ifs);       id info = nil;       for (NSString *ifnam in i

配置iis的时候一键控制iis开关的方法

我们在配置iis的时候经常需要多次重启iis,下面给大家介绍几种控制iis开启关闭以及重启的方法. 1.iis7服务器监控工具: 2.控制面板: 1.打开控制面板,点击“程序和功能” 2.点击左侧“打开或关闭Windows功能” 3.找到“Internet信息服务”选项,勾选以下选项.若不开启FTP服务则不用勾选“FTP服务器” 4.点击确定等待一段时间,然后点击控制面板中的“管理工具” 5.打开“Internet信息服务(IIS)管理器” 6.在网站标签点击右键选择“添加网站”,按步骤完成即可

asp.net mvc后台操作之读写xml控制首页动态页面开关显示

一.背景 在asp.net mvc项目里,用户需要开拓几个活动版面,并以侧栏的方式呈现在首页右侧,几个活动时间不一致,为避免浏览者在活动未开放之时进入未开放的服务页面.因此不仅需要在活动代码中加入限制功能,也需要在前台取消不合时宜的页面的展示.后台效果图: 二.问题分析 要想控制页面开关显示,就得有存储开关信息的介质,将在后台产生的操作记录下来,并在浏览者加载首页之时能读取操作记录并达到控制页面开关的目的.因此,考虑两种介质储存开关记录信息,一是用数据库mysql,二是用xml.考虑到这对数据库

8周《机电传动控制》学习笔记

一.交通灯控制 白天开关SW2(X025)是常闭的,进入绿黄红灯的循环,C1为5次闪烁的计数器,启动SW2进入夜间模式,红灯常亮,按下PB1按钮(X020),一段延时过后绿灯亮一段时间红灯继续常亮.满足要求. 二.输送带 X24启动电机正转,之后动作满足要求.

开关智能管理工具NI Switch Executive 15.10

NI Switch Executive 15.10是一款智能的开关管理与路由程序.在用于自动测试设备(ATE)系统的开关软件中 ,它提供了最新的革命.使用NI Switch Executive 15.10,你将可以通过交互式配置和命名开关模型.外部连接 和信号路由等途径来提高开发效率.你也可以使用NI TestStand, LabVIEW, LabWindows/CVI, 和 Measurement Studio进行开关编程来提高测试代码重用和系统性能.最终NI Switch Executive

三极管原理,开关电路设计原则,NPN、PNP区别及常用三极管参数

三极管的工作原理 三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E.分成NPN和PNP两种.我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理. 一.电流放大 下面的分析仅对于NPN型硅三极管.如上图所示,我们把从基极B流至发射极E的电流叫做基极电流Ib:把从集电极C流至发射极E的电流叫做集电极电流 Ic.这两个电流的方向都是流出发射极的,所以发射极E上就用了一个箭头来表示电流的方向.三极管的放大作用就是:集电极电流受基极电流的控制(假设电源 能够提供

基于飞凌FET1052-C控制永磁同步交流伺服电机方案

一.前言介绍,背景描述运动控制.精密控制是目前众多行业设备的需求,为了使这些设备能以最佳的性能工作,采用经过改进的新型马达控制技术是关键所在.能效的提高是趋势所向,新技术同时还能带来更多的优势,如实现更加平稳的工作,大幅度降低噪声水平.众多制造商正在应对这些挑战,马达市场正在被更加高效的方案替代,如直流无刷(BLDC)和永磁同步电机(PMSM). 近年来,采用全数字控制方法,以永磁交流电机为控制对象的全数字交流伺服系统正在逐渐取代以直流电机为控制对象的直流伺服系统和采用模拟控制技术的模拟式交流伺

节能降耗,Geeben G7系列LCD KVM控制台帮你忙

节能降耗,Geeben G7系列LCD KVM控制台帮你忙<?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"> ?xml:namespace> 社会的发展对能源的需求已经更上一层,而地球的资源则是越来越贫乏,节能减耗将是世界发展的趋势和永恒主题.同时对作为当今信息时代不可或缺的IT设备的要求则是越来越高,尤其是作为整个IT系统的核心部位的IDC中心服务器机房

win10电脑黑屏怎么办 教你七大解决方法

我想许多人都会像我一样,常常遇到一些电脑问题而手足无措吧.比如,电脑黑屏怎么办?那么,现在笔者和大家分享一些关于电脑黑屏产生的原因及解决办法. 电脑黑屏怎么办一:显示器 由于显示器自身的原因而不能正常工作造成的黑屏,如显示器的电源线有问题,电源插头接触不良(注意:两头都有可能),电源开关坏,显示器内部电路故障等. 电脑黑屏怎么办二:信号线 PC机使用的显示器采用的15针D形插头的连接方式,其中的第13,14针是行场同步信号,显示器通过判断这两个信号的有无来决定是否打开灯丝和高压的供电通路,同时这