Public Function winProc(ByVal hwnd As Long _
, ByVal uMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_KEYDOWN
Debug.Print "WM_KEYDOWN "; " &h" & Hex(wParam); " &h" & Hex(lParam)
Case WM_KEYUP
Debug.Print "WM_KEYUP "; " &h" & Hex(wParam); " &h" & Hex(lParam)
End Select
CallWindowProc oldPr, hwnd, uMsg, wParam, lParam
End Function
WM_KEYDOWN &h10 &h402A0001
WM_KEYDOWN &h24 &h1470001
WM_KEYUP &h24 &hC1470001
WM_KEYUP &h10 &hC02A0001
Private Sub Form_Click()
PostMessage text1.hwnd, WM_KEYDOWN, VK_SHIFT, &H402A0001
PostMessage text1.hwnd, WM_KEYDOWN, VK_HOME, &H1470001
PostMessage text1.hwnd, WM_KEYUP, VK_HOME, &HC1470001
PostMessage text1.hwnd, WM_KEYUP, VK_SHIFT, &HC02A0001
End Sub
Хакер писал(а):я смотрел Spy++-ом сообщения, которые присылаются окну твоим кодом, и которые приходят окну при реальном нажатии данных клавиш. Я видел различия.
keybd_event VK_SHIFT, 0, 0, 0 'press shift
keybd_event VK_HOME, 0, KEYEVENTF_EXTENDEDKEY, 0
Space писал(а):Что интересно, без флага KEYEVENTF_EXTENDEDKEY Cbx_KeyDown принимает клавиши как отдельно нажатые
PostMessage cbx.hwnd, WM_KEYDOWN, VK_SHIFT, 0 ' &H402A0001
PostMessage cbx.hwnd, WM_KEYDOWN, VK_HOME, 0 '&H1470001
PostMessage cbx.hwnd, WM_KEYUP, VK_HOME, 0 '&H1470001
PostMessage cbx.hwnd, WM_KEYUP, VK_SHIFT, 0 '&HC02A0001
В моем коде не post-, а sendmasage и нет дуэвентов, значит ничего в промежутке возникнуть не может
Space писал(а):Где энтот вумный Хакер?
Space писал(а):Хакера сегодня нет, он где-то в ФСБ доказывает, что он не верблюд
Space писал(а):ещё раз по буквам: проблема не в этом коде, проблема во внешних событиях, таких, как удар молотком юзверем по клаве в критический момент
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 42