ark писал(а):Если 9х и хочешь именно ВБ - придётся извращаться.
Хакер писал(а):TranslateMessage в Message Loop
ark писал(а):Глобальный message Loop на VB?
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) _
As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const VK_N = &H4E
Const VK_B = &H42
Const VK_H = &H48
Dim x As Long
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_N) Then
x = x + 1
Select Case x
Case 1
Call keybd_event(VK_H, 0, 0, 0)
Case 2
x = 0
Call keybd_event(VK_B, 0, 0, 0)
End Select
End If
End Sub
Жрут не кнопки, жрёт таймерozzet писал(а):ну мне 2 кнопки так что не пожрет
для wh_keyboard_ll - не надоozzet писал(а):+ еще dll надо создавать чтоб он глобальным был
ark писал(а):Теперь я не понимаю - мы что, про разные loop'ы?
Я имел в виду
- Код: Выделить всё
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
сообщение от клавы получает активное окно (ну, точнее, у которого Input focus), а не все. Что ж, субклассить все открытые окна?
Упс, не дочитал второй абзац, теперь дошло, что этот loop из keyboard.sys
И что, это проще/правильней чем WH_Keyboard_LL?
Из куска кода ТС я понял, что ему надо переопределять одну клавишу (N). N_Click = H, N_DblClick = B, т.е. переопределять раскладку по кликам - так что код всё равно нужен. Хотя идея интересная. Я б в этом случае набахал бы пару десятков раскладок с разницей в 1 vkey, и использовал бы одну кнопку как переключатель раскладок, тогда второй можно было бы весь алфавит написать.Хакер писал(а):Не надо вообще писать никакого кода
ozzet писал(а):да не важно куда)
ozzet писал(а):и у меня получается череда букв N
ozzet писал(а):я перехватил нажатие буквы N хуком WH_Keyboard_LL, зажал кнопку N и у меня получается череда букв N
ark писал(а):ozzet писал(а):я перехватил нажатие буквы N хуком WH_Keyboard_LL, зажал кнопку N и у меня получается череда букв N
RTFM несколько раз по WH_Keyboard_LL. Если из CallBack возвращаешь 0 - сообщение проходит дальше, если не ноль - блокируется. Смотри wParam на предмет WM_KEYDOWN/WM_KEYUP и соответсвенно тормози/пропускай сообщение
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 66