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

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

Melkiades
Я бы попробовал повесить хук на соотв. wm - событие.
А можно небольшой пример?
...
Рейтинг: 0 / 0
12.01.2006, 12:04:16
    #33478527
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прослушивать клавиатуру в VB6
Код: 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
12.01.2006, 13:24:02
    #33478879
Ghost_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прослушивать клавиатуру в VB6
Примного благодарен.
...
Рейтинг: 0 / 0
15.01.2006, 13:12:18
    #33483384
Ghost_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прослушивать клавиатуру в VB6
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
16.01.2006, 09:34:21
    #33484139
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прослушивать клавиатуру в VB6
Ну так объявите процедуру Command3_Click как Public, и обращайтесь к ней из модуля.
...
Рейтинг: 0 / 0
16.01.2006, 11:28:03
    #33484406
Ghost_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прослушивать клавиатуру в VB6
MelkiadesНу так объявите процедуру Command3_Click как Public, и обращайтесь к ней из модуля.


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

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


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