קוד:
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Private Const MOD_ALT As Short = &H1s
Private Const MOD_CONTROL As Short = &H2s
Private Const MOD_SHIFT As Short = &H4s
Private Const PM_REMOVE As Short = &H1s
Private Const WM_HOTKEY As Short = &H312s
Private Structure KeyboardBytes
<VBFixedArray(255)> Dim kbByte() As Byte
Public Sub Initialize()
ReDim kbByte(255)
End Sub
End Structure
Private Structure POINTAPI
Dim x As Integer
Dim y As Integer
End Structure
Private Structure Msg
Dim hWnd As Integer : Dim Message As Integer : Dim wParam As Integer
Dim lParam As Integer : Dim time As Integer : Dim pt As POINTAPI
End Structure
Private Structure Fid
Dim F1 As Integer : Dim F2 As Integer : Dim F3 As Integer : Dim F4 As Integer
Dim F5 As Integer : Dim F6 As Integer : Dim F7 As Integer : Dim F8 As Integer
Dim F9 As Integer : Dim F10 As Integer : Dim F11 As Integer : Dim f12 As Integer
Dim Killer As Integer
End Structure
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) ' for sending keystrokes
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Integer, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Integer, ByVal id As Integer) As Integer
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (ByRef lpMsg As Msg, ByVal hWnd As Integer, ByVal wMsgFilterMin As Integer, ByVal wMsgFilterMax As Integer, ByVal wRemoveMsg As Integer) As Integer ' needed to get messages from the system when a hotkey is pressed
Private Declare Function WaitMessage Lib "user32" () As Integer
Private bCancel As Boolean : Dim IDs As Fid : Dim CurGameID As Short : Dim kbArray As KeyboardBytes
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Dim MOD_ As Object : Dim vbKey As Object : Dim ret As Integer : bCancel = False
Show()
ret = RegisterHotKey(Me.Handle.ToInt32, 1, MOD_SHIFT, System.Windows.Forms.Keys.F1)
ret = RegisterHotKey(Me.Handle.ToInt32, 2, MOD_ALT, System.Windows.Forms.Keys.D1)
ret = RegisterHotKey(Me.Handle.ToInt32, 3, MOD_CONTROL, vbKey)
ret = RegisterHotKey(Me.Handle.ToInt32, 4, MOD_, System.Windows.Forms.Keys.C)
ret = RegisterHotKey(Me.Handle.ToInt32, 5, MOD_, System.Windows.Forms.Keys.F11)
ret = RegisterHotKey(Me.Handle.ToInt32, 6, MOD_, System.Windows.Forms.Keys.D9)
ProcessMessages()
End Sub
Private Sub ProcessMessages()
Dim Message As Msg
Do While Not bCancel
WaitMessage()
If PeekMessage(Message, Me.Handle.ToInt32, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
' add what u want to do here ...
If Message.wParam = 1 Then MsgBox("Shift +F1")
If Message.wParam = 2 Then MsgBox("Alt +1")
If Message.wParam = 3 Then MsgBox("Control")
If Message.wParam = 4 Then MsgBox("C")
If Message.wParam = 5 Then MsgBox("F11")
If Message.wParam = 6 Then MsgBox("9")
End If
System.Windows.Forms.Application.DoEvents()
Loop
End Sub
Private Sub cmdQuit_Click()
Me.Close()
End Sub
Private Sub Form1_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Dim ret As Object
bCancel = True
Call UnregisterHotKey(Me.Handle.ToInt32, &HBFFF)
ret = UnregisterHotKey(Me.Handle.ToInt32, 1)
ret = UnregisterHotKey(Me.Handle.ToInt32, 2)
ret = UnregisterHotKey(Me.Handle.ToInt32, 3)
ret = UnregisterHotKey(Me.Handle.ToInt32, 4)
ret = UnregisterHotKey(Me.Handle.ToInt32, 5)
ret = UnregisterHotKey(Me.Handle.ToInt32, 6)
End Sub
End Class