Code:
Option Explicit On
Imports System.Runtime.InteropServices
Public Class Form1
Public Const MOD_ALT As Integer = &H1 'Alt key
Public Const WM_HOTKEY As Integer = &H312
<DllImport("User32.dll")> _
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, _
ByVal id As Integer, ByVal fsModifiers As Integer, _
ByVal vk As Integer) As Integer
End Function
<DllImport("User32.dll")> _
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, _
ByVal id As Integer) As Integer
End Function
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Integer
'
<DllImport("user32.dll")> _
Private Shared Function SendInput( _
ByVal nInputs As Integer, _
ByVal pInputs() As INPUT, _
ByVal cbSize As Integer) As Integer
End Function
<StructLayout(LayoutKind.Explicit)> _
Private Structure INPUT
'Field offset 32 bit machine 4
'64 bit machine 8
<FieldOffset(0)> _
Public type As Integer
<FieldOffset(8)> _
Public mi As MOUSEINPUT
<FieldOffset(8)> _
Public ki As KEYBDINPUT
<FieldOffset(8)> _
Public hi As HARDWAREINPUT
End Structure
Private Structure MOUSEINPUT
Public dx As Integer
Public dy As Integer
Public mouseData As Integer
Public dwFlags As Integer
Public time As Integer
Public dwExtraInfo As IntPtr
End Structure
Private Structure KEYBDINPUT
Public wVk As Short
Public wScan As Short
Public dwFlags As Integer
Public time As Integer
Public dwExtraInfo As IntPtr
End Structure
Private Structure HARDWAREINPUT
Public uMsg As Integer
Public wParamL As Short
Public wParamH As Short
End Structure
Public Shared Sub SendKey(ByVal key As Char)
Dim Inpts(1) As INPUT
Inpts(1).type = 1
Inpts(1).ki.wVk = Convert.ToInt16(CChar(key))
Inpts(1).ki.dwFlags = Nothing
SendInput(1, Inpts, Marshal.SizeOf(GetType(INPUT)))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 1, Nothing, Keys.NumPad0)
RegisterHotKey(Me.Handle, 2, Nothing, Keys.NumPad1)
RegisterHotKey(Me.Handle, 3, Nothing, Keys.NumPad2)
RegisterHotKey(Me.Handle, 4, Nothing, Keys.NumPad3)
RegisterHotKey(Me.Handle, 5, Nothing, Keys.NumPad4)
RegisterHotKey(Me.Handle, 6, Nothing, Keys.NumPad5)
RegisterHotKey(Me.Handle, 7, Nothing, Keys.NumPad6)
RegisterHotKey(Me.Handle, 8, Nothing, Keys.NumPad7)
RegisterHotKey(Me.Handle, 9, Nothing, Keys.NumPad8)
RegisterHotKey(Me.Handle, 10, Nothing, Keys.NumPad9)
RegisterHotKey(Me.Handle, 11, Nothing, Keys.Oem3)
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_HOTKEY Then
Dim id As IntPtr = m.WParam
Select Case (id.ToString)
Case "1"
Dim hwnd As Integer = FindWindow("Battlefield 3™", "Battlefield 3™")
If hwnd > 0 Then
SetForegroundWindow(hwnd)
End If
'UnregisterHotKey(Me.Handle, 11)
' I open console manualy and they hit NumPad0
SendKey("/ban ") ' Still don't work
' RegisterHotKey(Me.Handle, 11, Nothing, Keys.Oem3)
Case "2"
MessageBox.Show("You pressed 1")
Case "3"
MessageBox.Show("You pressed 2")
Case "4"
MessageBox.Show("You pressed 3")
Case "5"
MessageBox.Show("You pressed 4")
Case "6"
MessageBox.Show("You pressed 5")
Case "7"
MessageBox.Show("You pressed 6")
Case "8"
MessageBox.Show("You pressed 7")
Case "9"
MessageBox.Show("You pressed 8")
Case "10"
MessageBox.Show("You pressed 9")
Case "11"
MessageBox.Show("You pressed `")
End Select
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles MyBase.FormClosing
UnregisterHotKey(Me.Handle, 1)
UnregisterHotKey(Me.Handle, 2)
UnregisterHotKey(Me.Handle, 3)
UnregisterHotKey(Me.Handle, 4)
UnregisterHotKey(Me.Handle, 5)
UnregisterHotKey(Me.Handle, 6)
UnregisterHotKey(Me.Handle, 7)
UnregisterHotKey(Me.Handle, 8)
UnregisterHotKey(Me.Handle, 9)
UnregisterHotKey(Me.Handle, 10)
UnregisterHotKey(Me.Handle, 11)
End Sub
Public Enum wVk As Short
VK_CANCEL = &H3 'BREAK(Control+Pause) key(ExtendedKey)
VK_BACK = &H8 'BACKSPACE key
VK_TAB = &H9 'TAB key
VK_CLEAR = &HC
VK_RETURN = &HD 'ENTER key
VK_SHIFT = &H10 'SHIFT key
VK_CONTROL = &H11 'CTRL key
VK_MENU = &H12 'ALT key
VK_PAUSE = &H13 'PAUSE key
VK_CAPITAL = &H14 'CAPS LOCK key
VK_KANA = &H15 'IME かな mode
VK_JUNJA = &H17
VK_FINAL = &H18
VK_KANJI = &H19 'IME 漢字 mode
VK_ESCAPE = &H1B 'ESC key
VK_CONVERT = &H1C 'IME 変換 key
VK_NONCONVERT = &H1D 'IME 無変換 key
VK_ACCEPT = &H1E
VK_MODECHANGE = &H1F
VK_SPACE = &H20 'SPACEBAR
VK_PRIOR = &H21 'PAGE UP key(ExtendedKey)
VK_NEXT = &H22 'PAGE DOWN key(ExtendedKey)
VK_END = &H23 'END key(ExtendedKey)
VK_HOME = &H24 'HOME key(ExtendedKey)
VK_LEFT = &H25 '← key(ExtendedKey)
VK_UP = &H26 '↑ key(ExtendedKey)
VK_RIGHT = &H27 '→ key(ExtendedKey)
VK_DOWN = &H28 '↓ key(ExtendedKey)
VK_SELECT = &H29
VK_PRINT = &H2A
VK_EXECUTE = &H2B
VK_SNAPSHOT = &H2C 'PRINT SCREEN key(ExtendedKey)
VK_INSERT = &H2D 'INS key(ExtendedKey)
VK_DELETE = &H2E 'DEL key(ExtendedKey)
VK_HELP = &H2F
VK_0 = &H30 '0 key
VK_1 = &H31 '1 key
VK_2 = &H32 '2 key
VK_3 = &H33 '3 key
VK_4 = &H34 '4 key
VK_5 = &H35 '5 key
VK_6 = &H36 '6 key
VK_7 = &H37 '7 key
VK_8 = &H38 '8 key
VK_9 = &H39 '9 key
VK_A = &H41 'A key
VK_B = &H42 'B key
VK_C = &H43 'C key
VK_D = &H44 'D key
VK_E = &H45 'E key
VK_F = &H46 'F key
VK_G = &H47 'G key
VK_H = &H48 'H key
VK_I = &H49 'I key
VK_J = &H4A 'J key
VK_K = &H4B 'K key
VK_L = &H4C 'L key
VK_M = &H4D 'M key
VK_N = &H4E 'N key
VK_O = &H4F 'O key
VK_P = &H50 'P key
VK_Q = &H51 'Q key
VK_R = &H52 'R key
VK_S = &H53 'S key
VK_T = &H54 'T key
VK_U = &H55 'U key
VK_V = &H56 'V key
VK_W = &H57 'W key
VK_X = &H58 'X key
VK_Y = &H59 'Y key
VK_Z = &H5A 'Z key
VK_LWIN = &H5B 'Left Windows key
VK_RWIN = &H5C 'Right Windows key
VK_APPS = &H5D ' Applications key
VK_NUMPAD0 = &H60 'Numeric keypad 0 key
VK_NUMPAD1 = &H61 'Numeric keypad 1 key
VK_NUMPAD2 = &H62 'Numeric keypad 2 key
VK_NUMPAD3 = &H63 'Numeric keypad 3 key
VK_NUMPAD4 = &H64 'Numeric keypad 4 key
VK_NUMPAD5 = &H65 'Numeric keypad 5 key
VK_NUMPAD6 = &H66 'Numeric keypad 6 key
VK_NUMPAD7 = &H67 'Numeric keypad 7 key
VK_NUMPAD8 = &H68 'Numeric keypad 8 key
VK_NUMPAD9 = &H69 'Numeric keypad 9 key
VK_MULTIPLY = &H6A '* key
VK_ADD = &H6B '+ key
VK_SEPERATOR = &H6C '
VK_SUBTRACT = &H6D '- key
VK_DECIMAL = &H6E 'テンキーの . key
VK_DEVIDE = &H6F '/ key(ExtendedKey)
VK_F1 = &H70 'F1 key
VK_F2 = &H71 'F2 key
VK_F3 = &H72 'F3 key
VK_F4 = &H73 'F4 key
VK_F5 = &H74 'F5 key
VK_F6 = &H75 'F6 key
VK_F7 = &H76 'F7 key
VK_F8 = &H77 'F8 key
VK_F9 = &H78 'F9 key
VK_F10 = &H79 'F10 key
VK_F11 = &H7A 'F11 key
VK_F12 = &H7B 'F12 key
VK_F13 = &H7C 'F13 key
VK_F14 = &H7D 'F14 key
VK_F15 = &H7E 'F15 key
VK_F16 = &H7F 'F16 key
VK_F17 = &H80 'F17 key
VK_F18 = &H81 'F18 key
VK_F19 = &H82 'F19 key
VK_F20 = &H83 'F20 key
VK_F21 = &H84 'F21 key
VK_F22 = &H85 'F22 key
VK_F23 = &H86 'F23 key
VK_F24 = &H87 'F24 key
VK_NUMLOCK = &H90 'NUM LOCK key(ExtendedKey)
VK_SCROLL = &H91 'SCROLL LOCK key
VK_LSHIFT = &HA0 'Left SHIFT key
VK_RSHIFT = &HA1 ' Right SHIFT key(ExtendedKey)
VK_LCONTROL = &HA2 'Left CONTROL key
VK_RCONTROL = &HA3 'Right CONTROL key(ExtendedKey)
VK_LMENU = &HA4 'Left MENU key
VK_RMENU = &HA5 'Right MENU key(ExtendedKey)
VK_OEM_1 = &HBA ': * key
VK_OEM_PLUS = &HBB '; + key
VK_OEM_COMMA = &HBC ', < key
VK_OEM_MINUS = &HBD '- = key
VK_OEM_PERIOD = &HBE '. > key
VK_OEM_2 = &HBF '/ ? key
VK_OEM_3 = &HC0 '@ ` key
VK_OEM_4 = &HDB '[ { key
VK_OEM_5 = &HDC '\ | key
VK_OEM_6 = &HDD '] } key
VK_OEM_7 = &HDE '^ ~ key
VK_OEM_8 = &HDF
VK_PROCESSKEY = &HE5
VK_OEM_ATTN = &HF0 '英数
VK_OEM_102 = &HE2 '\ _ key
VK_OEM_COPY = &HF2 'カタカナひらがな
VK_OEM_AUTO = &HF3 '全角/半角
VK_OEM_ENLW = &HF4 '全角/半角
VK_OEM_BACKTAB = &HF5 'ローマ字
VK_PACKET = &HE7
VK_ATTN = &HF6
VK_CRSEL = &HF7
VK_EXSEL = &HF8
VK_EREOF = &HF9
VK_PLAY = &HFA
VK_ZOOM = &HFB
VK_NONAME = &HFC
VK_PA1 = &HFD
VK_OEM_CLEAR = &HFE
End Enum
I have never used SendInput() before, in old gamse i have used SendKeys.Send("")