最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2007年03月09日 00:00:00   作者:  
最近找了一些資料,是講在C#中設(shè)置快捷鍵運(yùn)行方法或程序的

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

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 


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


  那么我們在別的窗口,怎么讓按了快捷鍵以后調(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);

相關(guān)文章

最新評論

吉林市| 康乐县| 西平县| 巴中市| 乡城县| 尤溪县| 武邑县| 盐源县| 浑源县| 兰考县| 翼城县| 嘉祥县| 沧源| 通山县| 京山县| 公主岭市| 沐川县| 巴彦淖尔市| 克东县| 连平县| 广安市| 巴林右旗| 谷城县| 香格里拉县| 新田县| 大同县| 上虞市| 古蔺县| 神木县| 尚义县| 桂东县| 溆浦县| 潍坊市| 邓州市| 西平县| 长汀县| 开化县| 香河县| 玉树县| 弥勒县| 普格县|