Код | Option Explicit Private Type POINTAPI x As Long y As Long End Type Private Type MSG hWnd As Long message As Long wParam As Long lParam As Long time As Long pt As POINTAPI End Type Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (ByRef lpMsg As MSG, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long Private Declare Function TranslateMessage Lib "user32" (ByRef lpMsg As MSG) As Long Private Const WM_CHAR As Long = &H102 Private Const WM_KEYDOWN As Long = &H100 Private Const PM_REMOVE As Long = &H1 Private Const PM_NOYIELD As Long = &H2 Public Function ReadKeyboardBuffer() As Long Dim msgMessage As MSG Dim hWnd As Long Dim lResult As Long hWnd = 0 lResult = PeekMessage(msgMessage, hWnd, WM_KEYDOWN, WM_KEYDOWN, PM_REMOVE + PM_NOYIELD) If lResult <> 0 Then lResult = TranslateMessage(msgMessage) lResult = PeekMessage(msgMessage, hWnd, WM_CHAR, WM_CHAR, PM_REMOVE + PM_NOYIELD) ReadKeyboardBuffer = msgMessage.wParam End If End Function Sub mainProg() '... Select Case ReadKeyboardBuffer Case 27: '... Case 32: '... Case Else End Select '... End Sub |
|