C#自訂快速鍵實現介紹

來源:互聯網
上載者:User
文章目錄
  • 這篇文章以按下Ctrl+Shift+0實現顯示案頭為例,採用C#編寫的程式碼說明C#自訂快速鍵的實現。
這篇文章以按下Ctrl+Shift+0實現顯示案頭為例,採用C#編寫的程式碼說明C#自訂快速鍵的實現。

    讀者可以依此類推,通過按下某些鍵可以實現一些自訂的功能,只要修改下面代碼中RegisterHotKey 的參數和case語句中的執行內容即可。

    下面給的樣本程式中關鍵處都具有注釋。

    下面給出一個完整的可啟動並執行C#編寫的樣本程式

    開啟VS2005整合式開發環境,建立一個windows應用程式,下面的是Form1.cs的全部代碼。

    (說明:要使該程式正確運行,必須把下面代碼中的C:\ShowDesktop.scf替換成你原生“顯示案頭.scf”檔案所在的路徑)

C#自訂快速鍵實現代碼

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel; 
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.  
  9. //要使用DllImport語句必須引用該命名空間  
  10. using System.Runtime.InteropServices; 
  11.  
  12. //要使用Process語句必須引用該命名空間  
  13. using System.Diagnostics; 
  14.  
  15. namespace WindowsApplication4  
  16. {  
  17. public partial class Form1 : Form  
  18.  
  19. //user32.dll是Unmanaged 程式碼,不能用命名空間的方式直接引用,
  20. //所以需要用“DllImport”進行引入後才能使用  
  21. [DllImport("user32.dll", SetLastError = true)]  
  22. public static extern bool RegisterHotKey(  
  23. IntPtr hWnd, //要定義熱鍵的視窗的控制代碼  
  24. int id, //定義熱鍵ID(不能與其它ID重複) 
  25. //標識熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時才會生效
  26. KeyModifiers fsModifiers,  
  27. Keys vk //定義熱鍵的內容  
  28. ); 
  29.  
  30. [DllImport("user32.dll", SetLastError = true)]  
  31. public static extern bool UnregisterHotKey(  
  32. IntPtr hWnd, //要取消熱鍵的視窗的控制代碼  
  33. int id //要取消熱鍵的ID 
  34.  
  35. ); 
  36.  
  37. //定義了輔助鍵的名稱(將數字轉變為字元以便於記憶,也可去除此枚舉而直接使用數值)  
  38. [Flags()]  
  39. public enum KeyModifiers  
  40. {  
  41. None = 0,  
  42. Alt = 1,  
  43. Ctrl = 2, 
  44. Shift = 4,  
  45. WindowsKey = 8,  
  46. CtrlAndShift = 6  
  47.  
  48.  
  49. private void Form1_Load(object sender, EventArgs e)  
  50. {  
  51. //註冊熱鍵Shift+S,Id號為100。KeyModifiers.Shift也可以直接使用數字4來表示。 
  52. RegisterHotKey(Handle, 100, KeyModifiers.Shift, Keys.S);  
  53. //註冊熱鍵Ctrl+B,Id號為101。KeyModifiers.Ctrl也可以直接使用數字2來表示。 
  54. RegisterHotKey(Handle, 101, KeyModifiers.Ctrl, Keys.B);  
  55. //註冊熱鍵Alt+D,Id號為102。KeyModifiers.Alt也可以直接使用數字1來表示。  
  56. RegisterHotKey(Handle, 102, KeyModifiers.Alt, Keys.D); 
  57. //註冊熱鍵Ctrl+Alt+0,Id號為103。KeyModifiers.CtrlAndAlt也可以直接使用數字3來表示。  
  58. RegisterHotKey(Handle, 103, KeyModifiers.CtrlAndShift, Keys.D0); 
  59.  
  60.  
  61. private void Form1_FormClosing(object sender, FormClosingEventArgs e)  
  62. {  
  63. //登出Id號為100的熱鍵設定  
  64. UnregisterHotKey(Handle, 100);  
  65. //登出Id號為101的熱鍵設定  
  66. UnregisterHotKey(Handle, 101);  
  67. //登出Id號為102的熱鍵設定  
  68. UnregisterHotKey(Handle, 102);  
  69. //登出Id號為103的熱鍵設定  
  70. UnregisterHotKey(Handle, 103);  
  71.  
  72. protected override void WndProc(ref Message m)  
  73. {  
  74. const int WM_HOTKEY = 0x0312;  
  75. //按快速鍵  
  76. switch (m.Msg)  
  77. {  
  78. case WM_HOTKEY:  
  79. switch (m.WParam.ToInt32())  
  80. {  
  81. case 100: //按下的是Shift+S  
  82. //此處填寫快速鍵響應代碼  
  83. break;  
  84. case 101: //按下的是Ctrl+B  
  85. //此處填寫快速鍵響應代碼  
  86. break;  
  87. case 102: //按下的是Alt+D  
  88. //此處填寫快速鍵響應代碼  
  89. break;  
  90. case 103: //按下的是Ctrl+Shift+0  
  91. {  
  92. Process Myprocess;  
  93. try 
  94. {  
  95. //這段程式功能為:按下Ctrl+Shift+0後顯示案頭  
  96. Myprocess = new System.Diagnostics.Process();  
  97. Myprocess.StartInfo.FileName = @"C:\ShowDesktop.scf";  
  98. Myprocess.StartInfo.Verb = "Open";  
  99. Myprocess.Start();  
  100. }  
  101. catch (Exception ex)  
  102. {  
  103. //程式出錯時提示資訊  
  104. MessageBox.Show(
  105. ex.Message, "資訊提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);  
  106. }  
  107. break;  
  108. }  
  109. }  
  110. break;  
  111. }  
  112. base.WndProc(ref m);  
  113.  
  114. public Form1()  
  115. {  
  116. InitializeComponent();  
  117. }  
  118. }  

    通過上述代碼就實現了C#自訂快速鍵的設定,大家可以嘗試一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.