hi,
here is an answer :
Public Class Form1
' If you just want the hot key, with no modifier
' use zero for the fsModifiers value (But this is a BAD IDEA).
Private Const NoModKey As Integer = 0
' Modifier key constants
Private Const MOD_ALT As Integer = 1
Private Const MOD_CONTROL As Integer = 2
Private Const MOD_SHIFT As Integer = 4
Private Const MOD_WIN As Integer = 8
' Value indicating Windows Message is a hot key.
Protected Friend Const WM_HOTKEY As Integer = 786
' Unique ID for the atomic hot key.
Protected Friend hotkeyID As Short
' Register hotkey
Protected Friend Declare Function RegisterHotKey Lib "user32" (ByVal
hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk
As Keys) As Integer
' Add global name for hotkey
Protected Friend Declare Function GlobalAddAtomA Lib "kernel32" (ByVal
lpString As String) As Short
' Delete hotkey atom.
Protected Friend Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal
nAtom As Integer) As Short
' Unregister hotkey.
Protected Friend Declare Function UnregisterHotKey Lib "user32" (ByVal
hwnd As IntPtr, ByVal id As Integer) As Integer
Private Sub hotkey_Load()
' GlobalAddAtom adds the String to the System global
' atom table, and returns a unique number to identify
' it the atom table.
hotkeyID = GlobalAddAtomA("GlobalHotKeyFor_MyUniqueAppName")
If hotkeyID = 0 Then
MessageBox.Show("Unable to generate the requested hotkey unique
ID.", "Error Making Hotkey ID")
Else
' Register the hot key combo used to show the form.
' I used Alt key modifier and the F1 key, Alt + F1,
' but you can use any key combo.
If RegisterHotKey(Me.Handle, hotkeyID, MOD_ALT, Keys.Delete) = 0
Then
MessageBox.Show("Unable to register the requested hotkey.",
"Error Registering Hotkey")
Else
'mettre la ligne suivante en commentaire pour la production
MessageBox.Show("The following Hotkey was registered for
this application: " & "Keys: Alt + F1", "Hot Key Registered")
End If
End If
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
' READ ME:
' You MUST unregister your Hot Key, or your application will leak
memory.
If Me.hotkeyID <0 Then
UnregisterHotKey(Me.Handle, hotkeyID)
' Also delete the hot key atom.
GlobalDeleteAtom(hotkeyID)
End If
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' Check for our Windows Message Hotkey.
If m.Msg = WM_HOTKEY Then
' Do something.
End If
' Return key messages to the application.
MyBase.WndProc(m)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
hotkey_Load()
End Sub
End Class
"Appr3nt1c3" <gu**********@hotmail.comwrote in message
news:db**********************************@e38g2000 prn.googlegroups.com...
Hello everyone!
I am new to VB .Net and currently i'm using vb .net 2005. My question
is: Is there a way to assign a global key handler for a certain key,
like if i press F9 or any other key from any part of my program, a
function or sub would be invoked? I used to do programming in Clipper
and this done achieved by the Setkey( <nKey>, <bFunction) function.
Can this be done in VB .Net?
Thanks in advance!
diego