powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прослушивать клавиатуру в VB6
12 сообщений из 12, страница 1 из 1
Как прослушивать клавиатуру в VB6
    #33478038
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Подскажите как правильно создать процедуру чтоб прослушивать нажатие клавиш, при этом чтоб другие процедуры были тоже доступны (например, нажатие кнопки на форме) и прослушка велась не только когда активно именно мое приложение но и когда поверх него работают другие приложения.
Пока в голову кроме этой корявой ерунды не чего не приходит:

Private Sub Form_Load()
Do
If GetKeyState(122) = True Then
If GetKeyState(123) = True Then
DoEvents
Loop
End Sub
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33478073
Посмотри здесь .
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33478091
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2Посмотри здесь .
Каждую миллисекунду опрашивать все клавиши на клавиатуре по очереди - это жестоко...
Я бы попробовал повесить хук на соотв. wm - событие.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33478277
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2
Посмотри здесь.
Хороший вариант мне вполне подходит.

Melkiades
Я бы попробовал повесить хук на соотв. wm - событие.
А можно небольшой пример?
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33478527
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
'In a module
Public Const WH_KEYBOARD =  2 
Public Const VK_SHIFT = &H10
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    'if idHook is less than zero, no further processing is required
    If idHook <  0  Then
        'call the next hook
        KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
    Else
        'check if SHIFT-S is pressed
        If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S") Then
            'show the result
            Form1.Print "Shift-S pressed ..."
        End If
        'call the next hook
        KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
    End If
End Function

'In a form, called Form1
Private Sub Form_Load()
    'set a keyboard hook
    hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'remove the windows-hook
    UnhookWindowsHookEx hHook
End Sub

...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33478879
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примного благодарен.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33483384
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkiades
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
'In a module
Public Const WH_KEYBOARD =  2 
Public Const VK_SHIFT = &H10
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    'if idHook is less than zero, no further processing is required
    If idHook <  0  Then
        'call the next hook
        KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
    Else
        'check if SHIFT-S is pressed
        If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S") Then
            'show the result
            Form1.Print "Shift-S pressed ..."
        End If
        'call the next hook
        KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
    End If
End Function

'In a form, called Form1
Private Sub Form_Load()
    'set a keyboard hook
    hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'remove the windows-hook
    UnhookWindowsHookEx hHook
End Sub



А если мне вместо Form1.Print "Shift-S pressed ..."
нужно вызвать процедуру из формы например Command3_Click как правильно это cделать, а то у меня прога вылетает.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33484139
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так объявите процедуру Command3_Click как Public, и обращайтесь к ней из модуля.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33484406
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkiadesНу так объявите процедуру Command3_Click как Public, и обращайтесь к ней из модуля.


Делал я и через Public серавно не работает.
При обращение через call не компилируется а по другому компилируется и принажатие клавиши прога вылетает.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33484431
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня это прекрасно работает. Код покажите.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33484857
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkiadesА у меня это прекрасно работает. Код покажите.

Всё разобрался я, дурацкая ошибка была.
...
Рейтинг: 0 / 0
Как прослушивать клавиатуру в VB6
    #33485494
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот блин опять проблема ведь таким образом не ловятся клавиши, если по верх моего приложения запущено другое приложение. Или я опять где-то накасячил.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прослушивать клавиатуру в VB6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]