程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在WinForm中注冊熱鍵

在WinForm中注冊熱鍵

編輯:關於.NET

Q:WinForm 如何注冊熱鍵?

A:

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.DirectoryServices;
using  System.Runtime.InteropServices;
namespace  test
...{
    public  partial  class  Form1  :  Form
    ...{
        class  HotKey
        ...{
            //如果函數執行成功,返回值不為0。
            //如果函數執行失敗,返回值為0。要得到擴展錯誤信息,調用GetLastError。
            [DllImport( "user32.dll ",  SetLastError  =  true)]
            public  static  extern  bool  RegisterHotKey(
                IntPtr  hWnd,                 //要定義熱鍵的窗口的句柄
                int  id,                      //定義熱鍵ID(不能與其它ID重復)           
                KeyModifiers  fsModifiers,    //標識熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時才會生效
                Keys  vk                      //定義熱鍵的內容
                );
            [DllImport( "user32.dll ",  SetLastError  =  true)]
            public  static  extern  bool  UnregisterHotKey(
                IntPtr  hWnd,                 //要取消熱鍵的窗口的句柄
                int  id                       //要取消熱鍵的ID
                );
            //定義了輔助鍵的名稱(將數字轉變為字符以便於記憶,也可去除此枚舉而直接使用數值)
            [Flags()]
            public  enum  KeyModifiers
            ...{
                None  =  0,
                Alt  =  1,
                Ctrl  =  2,
                Shift  =  4,
                WindowsKey  =  8
            }
        }
        public  Form1()
        ...{
            InitializeComponent();
            HotKey.RegisterHotKey(this.Handle,  100,  0,  Keys.F1);
        }
        protected  override  void  WndProc(ref  Message  m)
        ...{
            const  int  WM_HOTKEY  =  0x0312;
            //按快捷鍵 
            switch  (m.Msg)
            ...{
                case  WM_HOTKEY:
                    switch  (m.WParam.ToInt32())
                    ...{
                        case  100:
                            MessageBox.Show( "Press  F1 ");
                            break;
                    }
                    break;
            }
            base.WndProc(ref  m);
        }
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved