C#通过热键控制显示器开关的方法
本文实例讲述了C#通过热键控制显示器开关的方法。分享给大家供大家参考。
具体实现方法如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.Runtime.InteropServices;
namespaceOpenMonitor { publicpartialclassForm1:Form { publicForm1() { InitializeComponent(); HotKey.RegisterHotKey(this.Handle,100,0,Keys.F4); HotKey.RegisterHotKey(this.Handle,101,0,Keys.F5); }
classHotKey { //如果函数执行成功,返回值不为0。 //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 [DllImport("user32.dll ",SetLastError=true)] publicstaticexternboolRegisterHotKey( IntPtrhWnd,//要定义热键的窗口的句柄 intid, //定义热键ID(不能与其它ID重复) KeyModifiersfsModifiers,//标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keysvk //定义热键的内容 );
[DllImport("user32.dll ",SetLastError=true)] publicstaticexternboolUnregisterHotKey( IntPtrhWnd, //要取消热键的窗口的句柄 intid //要取消热键的ID );
//定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] publicenumKeyModifiers { None=0, Alt=1, Ctrl=2, Shift=4, WindowsKey=8 } }
protectedoverridevoidWndProc(ref Messagem) { constintWM_HOTKEY=0x0312; //按快捷键 switch(m.Msg) { caseWM_HOTKEY: switch(m.WParam.ToInt32()) { case100: MonitorHelper.TurnOn(); break; case101: MonitorHelper.TurnOff(); break; } break; } base.WndProc(ref m); }
classMonitorHelper { publicstaticvoidTurnOn() { SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,-1); }
publicstaticvoidTurnOff() { SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2); }
[DllImport("user32.dll")] publicstaticexternintSendMessage(IntPtrhWnd,uintMsg,intwParam,intlParam);
privatestaticreadonlyIntPtrHWND_BROADCAST=newIntPtr(0xffff); privateconstuintWM_SYSCOMMAND=0x0112; privateconstintSC_MONITORPOWER=0xf170; } } }