自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#自定義快捷鍵的實(shí)現(xiàn)

開(kāi)發(fā) 后端
本文主要介紹如何實(shí)現(xiàn)C#自定義快捷鍵(系統(tǒng)熱鍵),例如QQ軟件的Ctrl+Enter快捷鍵用來(lái)發(fā)送消息。

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

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

下面給的示例程序中關(guān)鍵處都具有注釋。

下面給出一個(gè)完整的可運(yùn)行的C#編寫的示例程序

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

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

C#自定義快捷鍵實(shí)現(xiàn)代碼

  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語(yǔ)句必須引用該命名空間  
  17.  
  18. using System.Runtime.InteropServices;  
  19.  
  20. //要使用Process語(yǔ)句必須引用該命名空間  
  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”進(jìn)行引入后才能使用  
  34.  
  35. [DllImport("user32.dll", SetLastError = true)]  
  36.  
  37. public static extern bool RegisterHotKey(  
  38.  
  39. IntPtr hWnd, //要定義熱鍵的窗口的句柄  
  40.  
  41. int id, //定義熱鍵ID(不能與其它ID重復(fù))   
  42.  
  43. KeyModifiers fsModifiers, //標(biāo)識(shí)熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時(shí)才會(huì)生效  
  44.  
  45. Keys vk //定義熱鍵的內(nèi)容  
  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. //定義了輔助鍵的名稱(將數(shù)字轉(zhuǎn)變?yōu)樽址员阌谟洃洠部扇コ嗣杜e而直接使用數(shù)值)  
  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. //注冊(cè)熱鍵Shift+S,Id號(hào)為100。KeyModifiers.Shift也可以直接使用數(shù)字4來(lái)表示。  
  89.  
  90. RegisterHotKey(Handle, 100, KeyModifiers.Shift, Keys.S);  
  91.  
  92. //注冊(cè)熱鍵Ctrl+B,Id號(hào)為101。KeyModifiers.Ctrl也可以直接使用數(shù)字2來(lái)表示。  
  93.  
  94. RegisterHotKey(Handle, 101, KeyModifiers.Ctrl, Keys.B);  
  95.  
  96. //注冊(cè)熱鍵Alt+D,Id號(hào)為102。KeyModifiers.Alt也可以直接使用數(shù)字1來(lái)表示。  
  97.  
  98. RegisterHotKey(Handle, 102, KeyModifiers.Alt, Keys.D);  
  99.  
  100. //注冊(cè)熱鍵Ctrl+Alt+0,Id號(hào)為103。KeyModifiers.CtrlAndAlt也可以直接使用數(shù)字3來(lái)表示。  
  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號(hào)為100的熱鍵設(shè)定  
  112.  
  113. UnregisterHotKey(Handle, 100);  
  114.  
  115. //注銷Id號(hào)為101的熱鍵設(shè)定  
  116.  
  117. UnregisterHotKey(Handle, 101);  
  118.  
  119. //注銷Id號(hào)為102的熱鍵設(shè)定  
  120.  
  121. UnregisterHotKey(Handle, 102);  
  122.  
  123. //注銷Id號(hào)為103的熱鍵設(shè)定  
  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. //此處填寫快捷鍵響應(yīng)代碼  
  152.  
  153. break;  
  154.  
  155. case 101: //按下的是Ctrl+B  
  156.  
  157. //此處填寫快捷鍵響應(yīng)代碼  
  158.  
  159. break;  
  160.  
  161. case 102: //按下的是Alt+D  
  162.  
  163. //此處填寫快捷鍵響應(yīng)代碼  
  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. //程序出錯(cuò)時(shí)提示信息  
  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. }  

通過(guò)上述代碼就實(shí)現(xiàn)了C#自定義快捷鍵的設(shè)置,大家可以嘗試一下。

【編輯推薦】

  1. C#自定義控件的開(kāi)發(fā):Pin和Connector
  2. 比較C#自定義控件的property(屬性)和/attribute(性質(zhì))
  3. C#組件開(kāi)發(fā):COM和.NET對(duì)象之間的互操作
  4. 介紹.NET平臺(tái)、C#和ASP.NET
  5. C# Attributes:定義設(shè)計(jì)期信息
責(zé)任編輯:book05 來(lái)源: hi.baidu
相關(guān)推薦

2009-09-10 18:06:25

C# button快捷

2011-09-05 18:54:03

windowsUbuntu

2009-08-10 10:43:18

Visual C#快捷

2009-08-21 18:02:41

C#快捷鍵

2009-08-04 08:58:01

C#自定義特性

2009-08-04 12:56:51

C#自定義事件

2009-09-03 15:46:57

C#自定義事件

2009-08-03 13:34:06

自定義C#控件

2009-08-28 17:45:19

C#自定義數(shù)據(jù)

2009-08-03 13:39:46

C#自定義用戶控件

2009-06-16 13:53:00

netbeans 快捷

2009-08-04 13:31:35

C#自定義事件

2009-08-17 17:24:02

C#自定義消息框

2009-08-05 17:03:37

C#自定義控件

2021-06-17 06:52:37

C#自定義異常

2009-08-04 09:56:46

C#事件處理自定義事件

2009-08-04 12:40:34

c#自定義事件

2009-08-12 14:53:50

C#類型轉(zhuǎn)換函數(shù)

2024-09-11 14:46:48

C#旋轉(zhuǎn)按鈕

2009-06-09 16:41:46

NetBeans快捷鍵java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)