?
Solved

Application wide Hotkey

Posted on 2009-05-04
2
Medium Priority
?
553 Views
Last Modified: 2012-05-06
Hi experts,

We have developed an application which is in SDI form and has multiple Forms using VB 2005 with .net framework 2.0. We need to provide hotkeys to perform specific actions. This hotkey may be pressed in any of the forms throughout the application. The system should be able to recognize this key press is required to execute some code.

In the above context i have done some research and got a solution which is very close to the one which i require -
www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_21584180.html

The limitation in the solution above is that it works system wide. When my application is minimized and user presses the hotkey, my application still responds to that, which is NOT required.

How can this be achieved?

The hotkey we are trying to use are all the function keys and other keys in combination with CTRL key.

Ketan.

0
Comment
Question by:s_monani
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 86

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24295661
If you want a "HotKey" across all forms, but ONLY in the application, then use IMessageFilter:
http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.addmessagefilter.aspx

Simple example that traps Ctrl-F1, Ctrl-F2, and Ctrl-F3:
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Application.AddMessageFilter(New MyMessageFilter)
    End Sub
 
    Public Class MyMessageFilter
        Implements IMessageFilter
 
        Private Const WM_KEYDOWN As Integer = &H100
 
        Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements IMessageFilter.PreFilterMessage
            Select Case m.Msg
                Case WM_KEYDOWN ' (Check for Ctrl being down...w/o the Alt key down)
                    If My.Computer.Keyboard.CtrlKeyDown AndAlso (Not My.Computer.Keyboard.AltKeyDown) Then
                        Select Case m.WParam.ToInt32
                            Case Keys.F1
                                MessageBox.Show("Ctrl-F1")
                                Return True
 
                            Case Keys.F2
                                MessageBox.Show("Ctrl-F2")
                                Return True
 
                            Case Keys.F3
                                MessageBox.Show("Ctrl-F3")
                                Return True
 
                            ' etc...
 
                        End Select
                    End If
 
            End Select
 
            Return False
        End Function
    End Class
 
End Class

Open in new window

0
 
LVL 1

Author Closing Comment

by:s_monani
ID: 31577463
Thanks a lot, the code exactly what i needed.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IP addresses can be stored in a database in any of several ways.  These ways may vary based on the volume of the data.  I was dealing with quite a large amount of data for user authentication purpose, and needed a way to minimize the storage.   …
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question