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

C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實(shí)例

 更新時(shí)間:2014年10月23日 14:54:51   投稿:shichen2014  
這篇文章主要介紹了C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實(shí)例,對(duì)C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置的實(shí)現(xiàn)方法與具體代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以參考下

本文實(shí)例講述了C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

1、窗體熱鍵

首先要設(shè)置主窗體KeyPreview為true,可直接在屬性中進(jìn)行設(shè)置,
或者在窗體加載中設(shè)置: this.KeyPreview = true;
然后添加窗體KeyDown事件,如下:

復(fù)制代碼 代碼如下:
private void FrmMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Alt && e.Shift && e.Control && e.KeyCode == Keys.S)
    {
 MessageBox.Show("我按了Control +Shift +Alt +S");
    }
}

2、全局熱鍵設(shè)置

定義API函數(shù) 》 注冊(cè)熱鍵 》 卸載熱鍵

我這里定義了AppHotKey類,全部代碼如下:

復(fù)制代碼 代碼如下:
public class AppHotKey
{
        [DllImport("kernel32.dll")]
        public static extern uint GetLastError();
        //如果函數(shù)執(zhí)行成功,返回值不為0。
        //如果函數(shù)執(zhí)行失敗,返回值為0。要得到擴(kuò)展錯(cuò)誤信息,調(diào)用GetLastError。
        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool RegisterHotKey(
            IntPtr hWnd,                //要定義熱鍵的窗口的句柄
            int id,                     //定義熱鍵ID(不能與其它ID重復(fù))          
            KeyModifiers fsModifiers,   //標(biāo)識(shí)熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時(shí)才會(huì)生效
            Keys vk                     //定義熱鍵的內(nèi)容
            );

        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool UnregisterHotKey(
            IntPtr hWnd,                //要取消熱鍵的窗口的句柄
            int id                      //要取消熱鍵的ID
            );

        //定義了輔助鍵的名稱(將數(shù)字轉(zhuǎn)變?yōu)樽址员阌谟洃洠部扇コ嗣杜e而直接使用數(shù)值)
        [Flags()]
        public enum KeyModifiers
        {
            None = 0,
            Alt = 1,
            Ctrl = 2,
            Shift = 4,
            WindowsKey = 8
        }
        /// <summary>
        /// 注冊(cè)熱鍵
        /// </summary>
        /// <param name="hwnd">窗口句柄</param>
        /// <param name="hotKey_id">熱鍵ID</param>
        /// <param name="keyModifiers">組合鍵</param>
        /// <param name="key">熱鍵</param>
        public static void RegKey(IntPtr hwnd, int hotKey_id, KeyModifiers keyModifiers, Keys key)
        {
            try
            {
                if (!RegisterHotKey(hwnd, hotKey_id, keyModifiers, key))
                {
                    if (Marshal.GetLastWin32Error() == 1409) { MessageBox.Show("熱鍵被占用 !"); }
                    else
                    {
                        MessageBox.Show("注冊(cè)熱鍵失敗!");
                    }
                }
            }
            catch (Exception) { }
        }
        /// <summary>
        /// 注銷熱鍵
        /// </summary>
        /// <param name="hwnd">窗口句柄</param>
        /// <param name="hotKey_id">熱鍵ID</param>
        public static void UnRegKey(IntPtr hwnd, int hotKey_id)
        {
            //注銷Id號(hào)為hotKey_id的熱鍵設(shè)定
            UnregisterHotKey(hwnd, hotKey_id);
        }
}

重寫(xiě)窗體的WndProc函數(shù),在窗口創(chuàng)建的時(shí)候注冊(cè)熱鍵,窗口銷毀時(shí)銷毀熱鍵,代碼如下:

復(fù)制代碼 代碼如下:
private const int WM_HOTKEY = 0x312; //窗口消息-熱鍵
private const int WM_CREATE = 0x1; //窗口消息-創(chuàng)建
private const int WM_DESTROY = 0x2; //窗口消息-銷毀
private const int Space = 0x3572; //熱鍵ID
protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    switch (m.Msg)
    {
 case WM_HOTKEY: //窗口消息-熱鍵ID
     switch (m.WParam.ToInt32())
     {
  case Space: //熱鍵ID
      MessageBox.Show("我按了Control +Shift +Alt +S");
      break;
  default:
      break;
     }
     break;
 case WM_CREATE: //窗口消息-創(chuàng)建
     AppHotKey.RegKey(Handle, Space, AppHotKey.KeyModifiers.Ctrl | AppHotKey.KeyModifiers.Shift | AppHotKey.KeyModifiers.Alt, Keys.S);
     break;
 case WM_DESTROY: //窗口消息-銷毀
     AppHotKey.UnRegKey(Handle, Space); //銷毀熱鍵
     break;
 default:
     break;
    }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#編程實(shí)現(xiàn)DataTable添加行的方法

    C#編程實(shí)現(xiàn)DataTable添加行的方法

    這篇文章主要介紹了C#編程實(shí)現(xiàn)DataTable添加行的方法,結(jié)合兩個(gè)實(shí)例形式分析了C#操作DataTable實(shí)現(xiàn)動(dòng)態(tài)添加行的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • c#調(diào)用jar包的方法步驟(非常詳細(xì))

    c#調(diào)用jar包的方法步驟(非常詳細(xì))

    這篇文章主要給大家介紹了關(guān)于c#調(diào)用jar包的方法步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • WinForm調(diào)用jar包的方法分析

    WinForm調(diào)用jar包的方法分析

    這篇文章主要介紹了WinForm調(diào)用jar包的方法,結(jié)合實(shí)例形式分析了WinForm調(diào)用jar包的原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-05-05
  • C#從DataTable獲取數(shù)據(jù)的方法

    C#從DataTable獲取數(shù)據(jù)的方法

    這篇文章主要介紹了C#從DataTable獲取數(shù)據(jù)的方法,涉及C#操作DataTable的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 詳解C#中的依賴注入和IoC容器

    詳解C#中的依賴注入和IoC容器

    這篇文章主要介紹了C#中的依賴注入和IoC容器的相關(guān)資料,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#通過(guò)cmd調(diào)用7z軟件實(shí)現(xiàn)壓縮和解壓文件

    C#通過(guò)cmd調(diào)用7z軟件實(shí)現(xiàn)壓縮和解壓文件

    這篇文章介紹了C#通過(guò)cmd調(diào)用7z軟件實(shí)現(xiàn)壓縮和解壓文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#中volatile與lock用法

    C#中volatile與lock用法

    這篇文章主要介紹了C#中volatile與lock用法,較為詳細(xì)的分析了C#中volatile與lock的適用情況及用法實(shí)例,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    這篇文章主要介紹了在C#?winform應(yīng)用程序中實(shí)現(xiàn)中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動(dòng)態(tài)設(shè)置控件字體和切換語(yǔ)言環(huán)境這四種方式,下面將詳細(xì)介紹每種方式及其具體實(shí)現(xiàn),并討論它們的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2024-04-04
  • C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例

    C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例

    這篇文章主要介紹了C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例,本文中的2個(gè)關(guān)閉事件是指Ctrl+C事件和窗口的關(guān)閉按鈕事件,需要的朋友可以參考下
    2014-09-09
  • 利用C#/VB.NET實(shí)現(xiàn)將PDF轉(zhuǎn)為Word

    利用C#/VB.NET實(shí)現(xiàn)將PDF轉(zhuǎn)為Word

    眾所周知,PDF 文檔支持特長(zhǎng)文件,集成度和安全可靠性都較高,可有效防止他人對(duì) PDF 內(nèi)容進(jìn)行更改,所以在工作中深受大家喜愛(ài)。本文將分為兩部分介紹如何以編程的方式將 PDF 轉(zhuǎn)換為 Word,需要的可以參考一下
    2022-12-12

最新評(píng)論

嘉荫县| 萍乡市| 达孜县| 金湖县| 诏安县| 东安县| 丰都县| 清远市| 垣曲县| 华蓥市| 罗定市| 汽车| 达尔| 阳高县| 崇州市| 鹤岗市| 成都市| 龙泉市| 大邑县| 毕节市| 甘肃省| 苏尼特右旗| 祁门县| 商河县| 井研县| 花莲市| 恩平市| 丹江口市| 兴山县| 青岛市| 温宿县| 斗六市| 云林县| 清流县| 和顺县| 曲靖市| 新乡市| 泰安市| 宁安市| 宁德市| 拜泉县|