日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
C#自定義快捷鍵的實現

這篇文章以按下Ctrl+Shift+0實現顯示桌面為例,采用C#編寫的程序代碼說明C#自定義快捷鍵的實現。

雨花臺網站建設公司成都創(chuàng)新互聯,雨花臺網站設計制作,有大型網站制作公司豐富經驗。已為雨花臺上千家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的雨花臺做網站的公司定做!

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

下面給的示例程序中關鍵處都具有注釋。

下面給出一個完整的可運行的C#編寫的示例程序

打開VS2005集成開發(fā)環(huán)境,新建一個windows應用程序,下面的是Form1.cs的全部代碼。

(說明:要使該程序正確運行,必須把下面代碼中的C:\ShowDesktop.scf替換成你本機的“顯示桌面.scf”文件所在的路徑)

C#自定義快捷鍵實現代碼

 
 
 
  1. using System;  
  2.  
  3. using System.Collections.Generic;  
  4.  
  5. using System.ComponentModel;  
  6.  
  7. using System.Data;  
  8.  
  9. using System.Drawing;  
  10.  
  11. using System.Text;  
  12.  
  13. using System.Windows.Forms;  
  14.  
  15.  
  16. //要使用DllImport語句必須引用該命名空間  
  17.  
  18. using System.Runtime.InteropServices;  
  19.  
  20. //要使用Process語句必須引用該命名空間  
  21.  
  22. using System.Diagnostics;  
  23.  
  24.  
  25. namespace WindowsApplication4  
  26.  
  27. {  
  28.  
  29. public partial class Form1 : Form  
  30.  
  31. {  
  32.  
  33. //user32.dll是非托管代碼,不能用命名空間的方式直接引用,所以需要用“DllImport”進行引入后才能使用  
  34.  
  35. [DllImport("user32.dll", SetLastError = true)]  
  36.  
  37. public static extern bool RegisterHotKey(  
  38.  
  39. IntPtr hWnd, //要定義熱鍵的窗口的句柄  
  40.  
  41. int id, //定義熱鍵ID(不能與其它ID重復)   
  42.  
  43. KeyModifiers fsModifiers, //標識熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時才會生效  
  44.  
  45. Keys vk //定義熱鍵的內容  
  46.  
  47. );  
  48.  
  49.  
  50. [DllImport("user32.dll", SetLastError = true)]  
  51.  
  52. public static extern bool UnregisterHotKey(  
  53.  
  54. IntPtr hWnd, //要取消熱鍵的窗口的句柄  
  55.  
  56. int id //要取消熱鍵的ID  
  57.  
  58. );  
  59.  
  60.  
  61. //定義了輔助鍵的名稱(將數字轉變?yōu)樽址员阌谟洃?,也可去除此枚舉而直接使用數值)  
  62.  
  63. [Flags()]  
  64.  
  65. public enum KeyModifiers  
  66.  
  67. {  
  68.  
  69. None = 0,  
  70.  
  71. Alt = 1,  
  72.  
  73. Ctrl = 2,  
  74.  
  75. Shift = 4,  
  76.  
  77. WindowsKey = 8,  
  78.  
  79. CtrlAndShift = 6  
  80.  
  81. }  
  82.  
  83.  
  84. private void Form1_Load(object sender, EventArgs e)  
  85.  
  86. {  
  87.  
  88. //注冊熱鍵Shift+S,Id號為100。KeyModifiers.Shift也可以直接使用數字4來表示。  
  89.  
  90. RegisterHotKey(Handle, 100, KeyModifiers.Shift, Keys.S);  
  91.  
  92. //注冊熱鍵Ctrl+B,Id號為101。KeyModifiers.Ctrl也可以直接使用數字2來表示。  
  93.  
  94. RegisterHotKey(Handle, 101, KeyModifiers.Ctrl, Keys.B);  
  95.  
  96. //注冊熱鍵Alt+D,Id號為102。KeyModifiers.Alt也可以直接使用數字1來表示。  
  97.  
  98. RegisterHotKey(Handle, 102, KeyModifiers.Alt, Keys.D);  
  99.  
  100. //注冊熱鍵Ctrl+Alt+0,Id號為103。KeyModifiers.CtrlAndAlt也可以直接使用數字3來表示。  
  101.  
  102. RegisterHotKey(Handle, 103, KeyModifiers.CtrlAndShift, Keys.D0);  
  103.  
  104. }  
  105.  
  106.  
  107. private void Form1_FormClosing(object sender, FormClosingEventArgs e)  
  108.  
  109. {  
  110.  
  111. //注銷Id號為100的熱鍵設定  
  112.  
  113. UnregisterHotKey(Handle, 100);  
  114.  
  115. //注銷Id號為101的熱鍵設定  
  116.  
  117. UnregisterHotKey(Handle, 101);  
  118.  
  119. //注銷Id號為102的熱鍵設定  
  120.  
  121. UnregisterHotKey(Handle, 102);  
  122.  
  123. //注銷Id號為103的熱鍵設定  
  124.  
  125. UnregisterHotKey(Handle, 103);  
  126.  
  127.  
  128. }  
  129.  
  130.  
  131. protected override void WndProc(ref Message m)  
  132.  
  133. {  
  134.  
  135. const int WM_HOTKEY = 0x0312;  
  136.  
  137. //按快捷鍵  
  138.  
  139. switch (m.Msg)  
  140.  
  141. {  
  142.  
  143. case WM_HOTKEY:  
  144.  
  145. switch (m.WParam.ToInt32())  
  146.  
  147. {  
  148.  
  149. case 100: //按下的是Shift+S  
  150.  
  151. //此處填寫快捷鍵響應代碼  
  152.  
  153. break;  
  154.  
  155. case 101: //按下的是Ctrl+B  
  156.  
  157. //此處填寫快捷鍵響應代碼  
  158.  
  159. break;  
  160.  
  161. case 102: //按下的是Alt+D  
  162.  
  163. //此處填寫快捷鍵響應代碼  
  164.  
  165. break;  
  166.  
  167. case 103: //按下的是Ctrl+Shift+0  
  168.  
  169. {  
  170.  
  171. Process Myprocess;  
  172.  
  173. try 
  174.  
  175. {  
  176.  
  177. //這段程序功能為:按下Ctrl+Shift+0后顯示桌面  
  178.  
  179. Myprocess = new System.Diagnostics.Process();  
  180.  
  181. Myprocess.StartInfo.FileName = @"C:\ShowDesktop.scf";  
  182.  
  183. Myprocess.StartInfo.Verb = "Open";  
  184.  
  185. Myprocess.Start();  
  186.  
  187. }  
  188.  
  189. catch (Exception ex)  
  190.  
  191. {  
  192.  
  193. //程序出錯時提示信息  
  194.  
  195. MessageBox.Show(ex.Message, "信息提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);  
  196.  
  197. }  
  198.  
  199. break;  
  200.  
  201. }  
  202.  
  203. }  
  204.  
  205. break;  
  206.  
  207. }  
  208.  
  209. base.WndProc(ref m);  
  210.  
  211. }  
  212.  
  213.  
  214.  
  215. public Form1()  
  216.  
  217. {  
  218.  
  219. InitializeComponent();  
  220.  
  221. }  
  222.  
  223. }  
  224.  
  225. }  

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


新聞標題:C#自定義快捷鍵的實現
本文路徑:http://www.5511xx.com/article/dhcdjhs.html