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

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

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

本文實例講述了C#全局熱鍵設(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ù) 》 注冊熱鍵 》 卸載熱鍵

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

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

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

        //定義了輔助鍵的名稱(將數(shù)字轉(zhuǎn)變?yōu)樽址员阌谟洃?,也可去除此枚舉而直接使用數(shù)值)
        [Flags()]
        public enum KeyModifiers
        {
            None = 0,
            Alt = 1,
            Ctrl = 2,
            Shift = 4,
            WindowsKey = 8
        }
        /// <summary>
        /// 注冊熱鍵
        /// </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("注冊熱鍵失?。?);
                    }
                }
            }
            catch (Exception) { }
        }
        /// <summary>
        /// 注銷熱鍵
        /// </summary>
        /// <param name="hwnd">窗口句柄</param>
        /// <param name="hotKey_id">熱鍵ID</param>
        public static void UnRegKey(IntPtr hwnd, int hotKey_id)
        {
            //注銷Id號為hotKey_id的熱鍵設(shè)定
            UnregisterHotKey(hwnd, hotKey_id);
        }
}

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

復(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;
    }
}

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了WinForm調(diào)用jar包的方法,結(jié)合實例形式分析了WinForm調(diào)用jar包的原理、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    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#通過cmd調(diào)用7z軟件實現(xiàn)壓縮和解壓文件

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

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

    C#中volatile與lock用法

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

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

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

    C#控制臺程序中處理2個關(guān)閉事件的代碼實例

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

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

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

最新評論

防城港市| 镇安县| 佳木斯市| 平遥县| 浠水县| 大荔县| 桂东县| 宾川县| 唐海县| 前郭尔| 广河县| 墨竹工卡县| 虹口区| 阿拉善右旗| 美姑县| 西平县| 垣曲县| 温宿县| 南昌县| 昌邑市| 大洼县| 象州县| 磴口县| 钟祥市| 富蕴县| 敦化市| 湟源县| 河南省| 九龙县| 印江| 密山市| 松潘县| 玛纳斯县| 临江市| 阜南县| 通山县| 梧州市| 凤冈县| 漠河县| 敖汉旗| 宁城县|