现在的位置: 首页 > 综合 > 正文

WinForm 如何注册热键?

2013年10月03日 ⁄ 综合 ⁄ 共 3037字 ⁄ 字号 评论关闭

 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); 

                }


 


                


        }


 

}

抱歉!评论已关闭.