Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'Out of date, will update eventually.
- Class Shortcut
- Inherits NativeWindow
- Implements IDisposable
- #Region " Declarations "
- Protected Declare Function UnregisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer) As Boolean
- Protected Declare Function RegisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer, ByVal modifier As Integer, ByVal vk As Integer) As Boolean
- Event Press(ByVal sender As Object, ByVal e As HotKeyEventArgs)
- Protected EventArgs As HotKeyEventArgs, ID As Integer
- Enum Modifier As Integer
- None = 0
- Alt = 1
- Ctrl = 2
- Shift = 4
- End Enum
- Class HotKeyEventArgs
- Inherits EventArgs
- Property Modifier As Shortcut.Modifier
- Property Key As Keys
- End Class
- Class RegisteredException
- Inherits Exception
- Protected Const s As String = "Shortcut combination is in use."
- Sub New()
- MyBase.New(s)
- End Sub
- End Class
- #End Region
- #Region " IDisposable "
- Private disposed As Boolean
- Protected Overridable Sub Dispose(ByVal disposing As Boolean)
- If Not disposed Then UnregisterHotKey(Handle, ID)
- disposed = True
- End Sub
- Protected Overrides Sub Finalize()
- Dispose(False)
- MyBase.Finalize()
- End Sub
- Sub Dispose() Implements IDisposable.Dispose
- Dispose(True)
- GC.SuppressFinalize(Me)
- End Sub
- #End Region
- Sub New(ByVal modifier As Modifier, ByVal key As Keys)
- CreateHandle(New CreateParams)
- ID = GetHashCode()
- EventArgs = New HotKeyEventArgs With {.Key = key, .Modifier = modifier}
- If Not RegisterHotKey(Handle, ID, modifier, key) Then Throw New RegisteredException
- End Sub
- Shared Function Create(ByVal modifier As Modifier, ByVal key As Keys) As Shortcut
- Return New Shortcut(modifier, key)
- End Function
- Protected Sub New()
- End Sub
- Protected Overrides Sub WndProc(ByRef m As Message)
- Select Case m.Msg
- Case 786
- RaiseEvent Press(Me, EventArgs)
- Case Else
- MyBase.WndProc(m)
- End Select
- End Sub
- End Class
- 'Usage:
- Dim WithEvents T As Shortcut
- Private Sub Form_Load() Handles MyBase.Load
- T = Shortcut.Create(Shortcut.Modifier.Alt, Keys.E)
- 'T = Shortcut.Create(Shortcut.Modifier.Alt Or Shortcut.Modifier.Shift, Keys.E)
- End Sub
- Private Sub T_Press(ByVal s As Object, ByVal e As Shortcut.HotKeyEventArgs) Handles T.Press
- MessageBox.Show("hello")
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement