国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

c#中設(shè)置快捷鍵

2019-11-18 17:55:55
字體:
供稿:網(wǎng)友

最近找了一些資料,是講在C#中設(shè)置快捷鍵運(yùn)行方法或程序的

要設(shè)置快捷鍵必須使用user32.dll下面的兩個(gè)方法。

BOOL RegisterHotKey(
 HWND hWnd,
 int id,
 UINT fsModifiers,
 UINT vk
);

  和

BOOL UnregisterHotKey(
 HWND hWnd,
 int id
);
轉(zhuǎn)換成C#代碼,那么首先就要引用命名空間System.Runtime.InteropServices;來加載非托管類user32.dll。于是有了:

[DllImport("user32.dll", SetLastError=true)]
public static extern bool RegisterHotKey(
 IntPtr hWnd, // handle to window
 int id, // hot key identifier
 KeyModifiers fsModifiers, // key-modifier options
 Keys vk // virtual-key code
);

[DllImport("user32.dll", SetLastError=true)]
public static extern bool UnregisterHotKey(
 IntPtr hWnd, // handle to window
 int id // hot key identifier
);


[Flags()]
public enum KeyModifiers
{
 None = 0,
 Alt = 1,
 Control = 2,
 Shift = 4,
 Windows = 8
}

  這是注冊(cè)和卸載全局快捷鍵的方法,那么我們只需要在Form_Load的時(shí)候加上注冊(cè)快捷鍵的語句,在FormClosing的時(shí)候卸載全局快捷鍵。同時(shí),為了保證剪貼板的內(nèi)容不受到其他程序調(diào)用剪貼板的干擾,在Form_Load的時(shí)候,我先將剪貼板里面的內(nèi)容清空。

  于是有了:

PRivate void Form1_Load(object sender, System.EventArgs e)
{
 label2.AutoSize = true;

 Clipboard.Clear();//先清空剪貼板防止剪貼板里面先復(fù)制了其他內(nèi)容
 RegisterHotKey(Handle, 100, 0, Keys.F10);
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
 UnregisterHotKey(Handle, 100);//卸載快捷鍵
}

  那么我們?cè)趧e的窗口,怎么讓按了快捷鍵以后調(diào)用我的主過程ProcessHotkey()呢?

  那么我們就必須重寫WndProc()方法,通過監(jiān)視系統(tǒng)消息,來調(diào)用過程:

protected override void WndProc(ref Message m)//監(jiān)視Windows消息
{
 const int WM_HOTKEY = 0x0312;//按快捷鍵
 switch (m.Msg)
 {
  case WM_HOTKEY:
   ProcessHotkey();//調(diào)用主處理程序
   break;
 }
 base.WndProc(ref m);
}

  這樣我的程序就完成了。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉贤区| 奎屯市| 弥渡县| 北辰区| 公安县| 云霄县| 阳城县| 清徐县| 禹州市| 晴隆县| 合水县| 多伦县| 古田县| 乌兰浩特市| 萨嘎县| 泸定县| 西昌市| 孝义市| 江川县| 安西县| 永清县| 连平县| 若尔盖县| 河曲县| 汝城县| 苗栗县| 宿迁市| 朝阳区| 车险| 惠东县| 青州市| 兰西县| 博野县| 苏尼特右旗| 兴山县| 威信县| 余江县| 沾益县| 新邵县| 玉山县| 河池市|