日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#系统热键类

發布時間:2025/4/5 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#系统热键类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C#系統熱鍵類
using?System;
using?System.Runtime.InteropServices;

namespace?SystemHotKey
{
????
public?delegate?void?HotkeyEventHandler(int?HotKeyID);

????
public?class?Hotkey?:?System.Windows.Forms.IMessageFilter
????{
????????System.Collections.Hashtable?keyIDs?
=?new?System.Collections.Hashtable();
????????IntPtr?hWnd;

????????
public?event?HotkeyEventHandler?OnHotkey;

????????
public?enum?KeyFlags
????????{
????????????MOD_ALT?
=?0x1,
????????????MOD_CONTROL?
=?0x2,
????????????MOD_SHIFT?
=?0x4,
????????????MOD_WIN?
=?0x8
????????}
????????[DllImport(
"user32.dll")]
????????
public?static?extern?UInt32?RegisterHotKey(?IntPtr?hWnd,?UInt32?id,?UInt32?fsModifiers,?UInt32?vk);

????????[DllImport(
"user32.dll")]
????????
public?static?extern?UInt32?UnregisterHotKey(?IntPtr?hWnd,?UInt32?id);?

????????[DllImport(
"kernel32.dll")]
????????
public?static?extern?UInt32?GlobalAddAtom(?String?lpString?);

????????[DllImport(
"kernel32.dll")]
????????
public?static?extern?UInt32?GlobalDeleteAtom(?UInt32?nAtom?);

????????
public?Hotkey(IntPtr?hWnd)
????????{
????????????
this.hWnd?=?hWnd;
????????????System.Windows.Forms.Application.AddMessageFilter(
this);
????????}

????????
public?int?RegisterHotkey(System.Windows.Forms.Keys?Key,?KeyFlags?keyflags)
????????{
????????????UInt32?hotkeyid?
=?GlobalAddAtom(System.Guid.NewGuid().ToString());
????????????RegisterHotKey(?(IntPtr)hWnd,?hotkeyid,?(UInt32)keyflags,?(UInt32)Key);
????????????keyIDs.Add(hotkeyid,?hotkeyid);
????????????
return?(int)hotkeyid;
????????}

????????
public?void?UnregisterHotkeys()
????????{
????????????System.Windows.Forms.Application.RemoveMessageFilter(
this);
????????????
foreach?(UInt32?key?in?keyIDs.Values)
????????????{
????????????????UnregisterHotKey(hWnd,?key);?
????????????????GlobalDeleteAtom(key);
????????????}
????????}

????????
public?bool?PreFilterMessage(ref?System.Windows.Forms.Message?m)?
????????{
????????????
if?(m.Msg?==?0x312)
????????????{
????????????????
if(OnHotkey?!=?null)?
????????????????{
????????????????????
foreach?(UInt32?key?in?keyIDs.Values)
????????????????????{
????????????????????????
if((UInt32)m.WParam?==?key)
????????????????????????{
????????????????????????????OnHotkey((
int)m.WParam);
????????????????????????????
return?true;
????????????????????????}
????????????????????}
????????????????}
????????????}
????????????
return?false;
????????}
????}
}

該類的使用方法:

在窗體的類中聲明一個變量
private?int?Hotkey1 在窗體的Load事件中加入如下代碼
Hotkey?hotkey;
hotkey?
=?new?Hotkey(this.Handle);
Hotkey1?
=?hotkey.RegisterHotkey(System.Windows.Forms.Keys.F1,?Hotkey.KeyFlags.MOD_CONTROL);//定義快鍵(Ctrl?+?F1)
hotkey.OnHotkey?+=?new?HotkeyEventHandler(OnHotkey); 添加快鍵調用函數 public?void?OnHotkey(int?HotkeyID)
{
????
if(HotkeyID?==?Hotkey1)
????{
????????
if(this.Visible?==?true)
????????????
this.Visible?=?false;
????????
else
????????????
this.Visible?=?true;
????}
????
else
????{
????????
this.Visible?=?false;
????}
}

轉載于:https://www.cnblogs.com/XingfuStar/archive/2006/02/14/330523.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C#系统热键类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。