成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#自定義快捷鍵的實現

開發 后端
本文主要介紹如何實現C#自定義快捷鍵(系統熱鍵),例如QQ軟件的Ctrl+Enter快捷鍵用來發送消息。

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

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

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

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

打開VS2005集成開發環境,新建一個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. //定義了輔助鍵的名稱(將數字轉變為字符以便于記憶,也可去除此枚舉而直接使用數值)  
  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#自定義快捷鍵的設置,大家可以嘗試一下。

【編輯推薦】

  1. C#自定義控件的開發:Pin和Connector
  2. 比較C#自定義控件的property(屬性)和/attribute(性質)
  3. C#組件開發:COM和.NET對象之間的互操作
  4. 介紹.NET平臺、C#和ASP.NET
  5. C# Attributes:定義設計期信息
責任編輯:book05 來源: hi.baidu
相關推薦

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#自定義數據

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#自定義消息框

2021-06-17 06:52:37

C#自定義異常

2009-08-05 17:03:37

C#自定義控件

2009-08-04 09:56:46

C#事件處理自定義事件

2009-06-09 16:41:46

NetBeans快捷鍵java

2009-08-12 14:53:50

C#類型轉換函數

2009-08-04 12:40:34

c#自定義事件

2024-09-11 14:46:48

C#旋轉按鈕
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线一区二区三区 | 成人免费视频播放 | 欧美一区二区三区在线观看 | 大香在线伊779 | 国产精品国产三级国产aⅴ入口 | 中文字幕一区二区三区日韩精品 | 美女在线一区二区 | 午夜私人影院 | 久久国产精品一区二区 | 亚洲一区二区三区四区五区午夜 | 国产日韩欧美激情 | 天天艹天天干天天 | 欧美专区在线 | 欧美精品久久 | 91成人精品| 自拍偷拍中文字幕 | 精品日韩一区二区三区 | 色综合久久天天综合网 | 日本精品一区二区在线观看 | 国产精品精品久久久久久 | 精品国产乱码久久久久久果冻传媒 | 一级黄a视频| www.婷婷| 少妇av片 | 香蕉国产在线视频 | 成人h免费观看视频 | 成人国产精品久久 | 久久国品片 | 国产午夜精品一区二区三区 | 性视频一区 | 在线观看中文字幕视频 | 亚洲人成人一区二区在线观看 | 国产成人精品一区二 | 国产成人免费视频网站视频社区 | 精品亚洲永久免费精品 | 午夜精品一区 | 久久成人高清视频 | 成人啊啊啊 | 国产婷婷色一区二区三区 | 国内精品久久久久久 | 国产一级一级毛片 |