在C#程式中使用系統熱鍵
1.首先引入System.Runtime.InteropServices
using System.Runtime.InteropServices;
2.在類內部宣告兩個API函式,它們的位置和類的成員變數等同.
[System.Runtime.InteropServices.DllImport("user32.dll")] //申明API函式
public static extern bool RegisterHotKey(
IntPtr hWnd, // handle to window
int id, // hot key identifier
uint fsModifiers, // key-modifier options
Keys vk // virtual-key code
);
[System.Runtime.InteropServices.DllImport("user32.dll")] //申明API函式
public static extern bool UnregisterHotKey(
IntPtr hWnd, // handle to window
int id // hot key identifier
);
3.定義一個KeyModifiers的列舉,以便出現組合鍵
public enum KeyModifiers
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
4.在類的建構函式出註冊系統熱鍵
示例,下例註冊了四個熱鍵:
public MainForm()
{
InitializeComponent();
RegisterHotKey(Handle, 100, 2, Keys.Left);// 熱鍵一:Control +游標左箭頭
RegisterHotKey(Handle, 200, 2, Keys.Right);/ /熱鍵一:Control +游標右箭頭
RegisterHotKey(Handle, 300, 2, Keys.Up);// 熱鍵一:Control +游標上箭頭
RegisterHotKey(Handle, 400, 2, Keys.Down);// 熱鍵一:Control +游標下箭頭
....;
}
5.重寫WndProc()方法,通過監視系統訊息,來呼叫過程
示例:
protected override void WndProc(ref Message m)//監視Windows訊息
{
const int WM_HOTKEY = 0x0312;//如果m.Msg的值為0x0312那麼表示使用者按下了熱鍵
switch (m.Msg)
{
case WM_HOTKEY:
ProcessHotkey(m);//按下熱鍵時呼叫ProcessHotkey()函式
break;
}
base.WndProc(ref m); //將系統訊息傳遞自父類的WndProc
}
5.不用說,我們接下來需要實現ProcessHotkey函式:
//按下設定的鍵時呼叫該函式
private void ProcessHotkey(Message m)
{
IntPtr id = m.WParam; //IntPtr用於表示指標或控制程式碼的平臺特定型別
//MessageBox.Show(id.ToString());
string sid = id.ToString();
switch (sid)
{
case "100": DecreseVolumnb(); break;// 按下Control +游標左箭頭,呼叫函式DecreseVolumnb();
case "200": AddVolumnb(); break;// 按下Control +游標右箭頭,呼叫函式AddVolumnb()
case "300":// 按下Control +游標上箭頭,顯示窗體
this.Visible = true;
break;
case "400":// 按下Control +游標下箭頭,隱藏窗體
this.Visible = false;
break;
}
}
很明顯接下來分別實現函式DecreseVolumnb(); 和AddVolumnb(); 即可.
6.最後別忘了在程式退出時取消熱鍵的註冊
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
UnregisterHotKey(Handle, 100);//解除安裝第1個快捷鍵
UnregisterHotKey(Handle, 200); //缷載第2個快捷鍵
UnregisterHotKey(Handle, 300);//解除安裝第3個快捷鍵
UnregisterHotKey(Handle, 400); //缷載第4個快捷鍵
}
以上就是在C#程式中使用系統熱鍵的整個過程
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-541446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遮蔽系統熱鍵鉤子Hook程式Hook
- 如和獲得系統熱鍵
- 在UNIX系統中使用自定義功能鍵(轉)
- 導熱材料在電子產品散熱系統中的重要性
- C#~非同步程式設計在專案中的使用C#非同步程式設計
- 【Roger Wo】在.NET程式中控制系統音量
- 在Java中this關鍵字的使用Java
- VMware - 虛擬機器系統中無法使用鍵盤虛擬機
- 在inputrc中定義多重熱鍵(如Ctrl+Alt+H)(轉)
- C#系統網路程式設計C#程式設計
- XP系統的熱鍵漏洞和對應的安全策略
- 低程式碼在ERP系統實施中的作用
- 一鍵ROOT許可權系統程式解除安裝器使用教程
- 使用 mDNS 在區域網中輕鬆發現系統DNS
- 如何使用storcli在系統中管理RAID磁碟陣列AI陣列
- 彈框 在Avalonia中,使用系統預設的彈框
- creo2.0中鍵在win10系統中不能用的最佳解決方法Win10
- Linux系統程式設計(19)——正規表示式在sed和awk中的使用Linux程式設計
- 使用C#返回系統特殊路徑 (轉)C#
- 在Mac中如何用⌘鍵拖拽非使用中的視窗?Mac
- 一鍵關閉 Win11 系統廣告「GitHub 熱點速覽」Github
- windows10系統下滑鼠中鍵無法正常使用怎麼辦Windows
- 在C#中操作XML .C#XML
- 在SuperMemo中,使用快捷鍵Ctrl+Shift+C,能夠幫助你複製知識系統到新的位置。
- 避免在程式碼中直接使用delete關鍵字delete
- 如何讓任何小程式都支援在windows系統中開啟?Windows
- 在Delphi程式設計中獲取作業系統資訊 (轉)程式設計作業系統
- EhCache快取系統在整合環境中的使用詳解快取
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- 在Linux中,如何監控系統資源使用情況?Linux
- 在Linux中,如何檢視系統資源使用情況?Linux
- 使用C#在應用程式間傳送訊息C#
- opatch 在windows系統中使用配置Windows
- 使用 CefSharp 在 C# App 中嵌入 Chrome 瀏覽器C#APPChrome瀏覽器
- jquery禁止在頁面使用滑鼠右鍵程式碼示例jQuery
- 在 Linux 系統中禁用與解禁使用者的賬號Linux
- Laravel使用command在Linux系統中跑定時任務LaravelLinux
- 亞馬遜認為在分散式系統中必須避免使用回退亞馬遜分散式