GetKeyboardState API function is your best bet.
[php]
Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
[/php]
Example:
[php]
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")> _
Public Shared Function GetKeyboardState(ByVal keystate As Byte()) As Integer
End Function
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
Dim keys__1 As Byte() = New Byte(254) {}
GetKeyboardState(keys__1)
If keys__1(CInt(Keys.Up)) = 129 AndAlso keys__1(CInt(Keys.Right)) = 129 Then
Console.WriteLine("Up Arrow key and Right Arrow key down at the same time")
End If
End Sub
End Class
[/php]
Virtual Keys
[php]
Imports System.Runtime.InteropServices
Imports System
Imports System.Collections.Generic
Imports System.Text
Namespace PInvoke.Net
Public Class Keyboard
<DllImport("user32.dll")> _
Private Shared Function GetKeyState(ByVal nVirtKey As VirtualKeyStates) As Short
End Function
Public Shared Function IsKeyPressed(ByVal testKey As VirtualKeyStates) As Boolean
Dim keyPressed As Boolean = False
Dim result As Short = GetKeyState(testKey)
Select Case result
Case 0
keyPressed = False
Exit Select
Case 1
keyPressed = False
Exit Select
Case Else
keyPressed = True
Exit Select
End Select
Return keyPressed
End Function
Public Enum VirtualKeyStates As Integer
VK_LBUTTON = &H1
VK_RBUTTON = &H2
VK_CANCEL = &H3
VK_MBUTTON = &H4
'
VK_XBUTTON1 = &H5
VK_XBUTTON2 = &H6
'
VK_BACK = &H8
VK_TAB = &H9
'
VK_CLEAR = &HC
VK_RETURN = &HD
'
VK_SHIFT = &H10
VK_CONTROL = &H11
VK_MENU = &H12
VK_PAUSE = &H13
VK_CAPITAL = &H14
'
VK_KANA = &H15
VK_HANGEUL = &H15
VK_HANGUL = &H15
VK_JUNJA = &H17
VK_FINAL = &H18
VK_HANJA = &H19
VK_KANJI = &H19
'
VK_ESCAPE = &H1B
'
VK_CONVERT = &H1C
VK_NONCONVERT = &H1D
VK_ACCEPT = &H1E
VK_MODECHANGE = &H1F
'
VK_SPACE = &H20
VK_PRIOR = &H21
VK_NEXT = &H22
VK_END = &H23
VK_HOME = &H24
VK_LEFT = &H25
VK_UP = &H26
VK_RIGHT = &H27
VK_DOWN = &H28
VK_SELECT = &H29
VK_PRINT = &H2A
VK_EXECUTE = &H2B
VK_SNAPSHOT = &H2C
VK_INSERT = &H2D
VK_DELETE = &H2E
VK_HELP = &H2F
'
VK_LWIN = &H5B
VK_RWIN = &H5C
VK_APPS = &H5D
'
VK_SLEEP = &H5F
'
VK_NUMPAD0 = &H60
VK_NUMPAD1 = &H61
VK_NUMPAD2 = &H62
VK_NUMPAD3 = &H63
VK_NUMPAD4 = &H64
VK_NUMPAD5 = &H65
VK_NUMPAD6 = &H66
VK_NUMPAD7 = &H67
VK_NUMPAD8 = &H68
VK_NUMPAD9 = &H69
VK_MULTIPLY = &H6A
VK_ADD = &H6B
VK_SEPARATOR = &H6C
VK_SUBTRACT = &H6D
VK_DECIMAL = &H6E
VK_DIVIDE = &H6F
VK_F1 = &H70
VK_F2 = &H71
VK_F3 = &H72
VK_F4 = &H73
VK_F5 = &H74
VK_F6 = &H75
VK_F7 = &H76
VK_F8 = &H77
VK_F9 = &H78
VK_F10 = &H79
VK_F11 = &H7A
VK_F12 = &H7B
VK_F13 = &H7C
VK_F14 = &H7D
VK_F15 = &H7E
VK_F16 = &H7F
VK_F17 = &H80
VK_F18 = &H81
VK_F19 = &H82
VK_F20 = &H83
VK_F21 = &H84
VK_F22 = &H85
VK_F23 = &H86
VK_F24 = &H87
'
VK_NUMLOCK = &H90
VK_SCROLL = &H91
'
VK_OEM_NEC_EQUAL = &H92
VK_LSHIFT = &HA0
VK_RSHIFT = &HA1
VK_LCONTROL = &HA2
VK_RCONTROL = &HA3
VK_LMENU = &HA4
VK_RMENU = &HA5
'
VK_BROWSER_BACK = &HA6
VK_BROWSER_FORWARD = &HA7
VK_BROWSER_REFRESH = &HA8
VK_BROWSER_STOP = &HA9
VK_BROWSER_SEARCH = &HAA
VK_BROWSER_FAVORITES = &HAB
VK_BROWSER_HOME = &HAC
'
VK_VOLUME_MUTE = &HAD
VK_VOLUME_DOWN = &HAE
VK_VOLUME_UP = &HAF
VK_MEDIA_NEXT_TRACK = &HB0
VK_MEDIA_PREV_TRACK = &HB1
VK_MEDIA_STOP = &HB2
VK_MEDIA_PLAY_PAUSE = &HB3
VK_LAUNCH_MAIL = &HB4
VK_LAUNCH_MEDIA_SELECT = &HB5
VK_LAUNCH_APP1 = &HB6
VK_LAUNCH_APP2 = &HB7
VK_OEM_1 = &HBA
End Enum
End Class
End Namespace
Public Class Form1
<DllImport("user32.dll")> _
Public Shared Function GetKeyboardState(ByVal keystate As Byte()) As Integer
End Function
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
Dim keys__1 As Byte() = New Byte(254) {}
GetKeyboardState(keys__1)
If keys__1(CInt(Keys.Up)) = 129 AndAlso keys__1(CInt(Keys.Right)) = 129 Then
Console.WriteLine("Up Arrow key and Right Arrow key down at the same time")
End If
End Sub
End Class
[/php]