Click here to Skip to main content
11,581,982 members (80,199 online)
Click here to Skip to main content

Smart Hotkey Handler .NET

, 9 Aug 2010 CPOL 24.5K 1.4K 53
Rate this:
Please Sign up or sign in to vote.
Tutorial about Smart Hot Key Handler .NET control library

Introduction

Basically hot keys provide quick access to a feature of software application by pressing finite set of one or more keys. These keys will work even when the specific application is inactive or hidden. Normally implementing hot-keys feature for an application is a complex process. I want to make it simple and it is needed for one of my projects. After spending some time with MSDN, I created the Smart Hot key Handler in C#.NET. It will very useful for .NET based windows application developers; they can use it even they don't have any knowledge on Win32 application and libraries.

Using the Smart Hot Key Handler

Smart Hotkey handler.NET allows Windows applications to subscribe all registered hotkey events with minimum efforts. It supports to register all normal keys and function keys as hot key with or without key modifiers (Alt, Shift, Control and Windows).

You can get the full source code of this handler here.

Follow the steps given below to use the smart hot key handler in a test application.

  1. Create a new Windows Application from Visual Studio 2008.
  2. Add Smart Hot key control to Toolbox (if not available), then drag and drop on to your form.
  3. Open your form code file and add the following line of code at the constructor of the form.
    this.hotKey1.HotKeyPressed += 
    	new SmartHotKey.HotKey.HotKeyEventHandler(hotKey1_HotKeyPressed); 
  4. Add the hot key press event handler.
    void hotKey1_HotKeyPressed(object sender, SmartHotKey.HotKeyEventArgs e)
    {
            MessageBox.Show(e.HotKey);
    } 
  5. Register all required hot-keys.
    //normal keys
    this.hotKey1.AddHotKey("S");
    this.hotKey1.AddHotKey("A");
        
    //normal keys with keymodifiers
    this.hotKey1.AddHotKey("Control+Shift+Alt+U");
    this.hotKey1.AddHotKey("Control+Shift+E");
    
    //function keys
    this.hotKey1.AddHotKey("F2");
    this.hotKey1.AddHotKey("F9");
    
    //function keys with keymodifiers
    this.hotKey1.AddHotKey("Shift+F1");
    
    //other keys[Home,End,PageDown,PageUp and Delete]
    this.hotKey1.AddHotKey("Shift+End");
    this.hotKey1.AddHotKey("End"); 
  6. Add the following line of code inside of the Dispose method to release the hot key handler.
    //remove all keys
    this.hotKey1.RemoveAllKeys();
    
    //remove the specific hot key
    this.hotKey1.RemoveKey("Shift+End"); //you can call this method 
    				//wherever you want to remove a hotkey.
    		//It will release the hotkey handler from your application.
  7. Now you run and test your application, you can get the following messages when you hit one or more keys on your keyboard.

Sample Outputs

S.JPG

Nkeymod.JPG

F2.JPG

ShiftF1.JPG

ShiftEnd.JPG

In the same way, you can customize the hot key combination based on your requirements.

Conclusion

I hope this will reduce your development time on hot key implementation for your application. Currently Windows key modifier combination hot-keys are not working properly. If you have any workaround or solution, please share with me.

This is my first article, so I look forward to getting your feedback on grammatical and technical mistakes. It will really help me to improve myself and write more useful articles.

History

  • 9th August, 2010: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

techbird
Architect FE
India India
.Net Software Architect,I primarily work on ASP.NET, WPF and WCF. I have good experience on designing robust application. I love listening to music.

You may also be interested in...

Comments and Discussions

 
Questionvery nice Pin
expert-programmer15-Nov-13 7:57
memberexpert-programmer15-Nov-13 7:57 
Questionhow to use space and arrow key Pin
Hitesh Rohilla23-Jun-13 6:42
professionalHitesh Rohilla23-Jun-13 6:42 
QuestionCan't we ? Pin
Tarek Elqusi7-Jan-13 0:45
memberTarek Elqusi7-Jan-13 0:45 
Can't we capture hot keys without using the Win32 functions ? I just need to capture the ALT+F4 to prevent closing a form and I do not need to include all this stuff
QuestionF12 is not Working Pin
luckyaruns3-Feb-12 3:49
memberluckyaruns3-Feb-12 3:49 
QuestionNOt able to register F12 Pin
luckyaruns24-Jan-12 2:45
memberluckyaruns24-Jan-12 2:45 
GeneralMy vote of 5 Pin
oned218-Oct-10 9:05
memberoned218-Oct-10 9:05 
GeneralNice Pin
Chona117111-Aug-10 22:41
memberChona117111-Aug-10 22:41 
QuestionWindows? Pin
Christ Kennedy10-Aug-10 11:24
memberChrist Kennedy10-Aug-10 11:24 
AnswerRe: Windows? Pin
techbird11-Aug-10 6:49
membertechbird11-Aug-10 6:49 
AnswerRe: Windows? Pin
Chona117111-Aug-10 22:43
memberChona117111-Aug-10 22:43 
AnswerRe: Windows? Pin
techbird12-Aug-10 20:55
membertechbird12-Aug-10 20:55 
GeneralRe: Windows? Pin
Christ Kennedy13-Aug-10 2:54
memberChrist Kennedy13-Aug-10 2:54 
GeneralRe: Windows? Pin
techbird17-Aug-10 6:48
membertechbird17-Aug-10 6:48 
GeneralVery Useful Pin
ScruffyDuck10-Aug-10 10:20
memberScruffyDuck10-Aug-10 10:20 
QuestionWhat's about global hot keys? Pin
tarasn9-Aug-10 21:15
membertarasn9-Aug-10 21:15 
AnswerRe: What's about global hot keys? Pin
techbird10-Aug-10 8:03
membertechbird10-Aug-10 8:03 
GeneralRe: What's about global hot keys? Pin
tarasn10-Aug-10 10:53
membertarasn10-Aug-10 10:53 
GeneralRe: What's about global hot keys? Pin
techbird11-Aug-10 6:51
membertechbird11-Aug-10 6:51 
GeneralBetter as a Tip/Trick or Blog post Pin
digital man8-Aug-10 21:26
memberdigital man8-Aug-10 21:26 
GeneralRe: Better as a Tip/Trick or Blog post Pin
techbird10-Aug-10 7:51
membertechbird10-Aug-10 7:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150603.1 | Last Updated 9 Aug 2010
Article Copyright 2010 by techbird
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid