Страница: 1 |
Как отслеживать нажатия клавиш. ***!***Не только при активной форме***!*** Чтобы узнавать о каждой нажатой клавиши. Кстати, мож знаете как скрыть процесс приложения в XP...
кинь на форму таймер с интервалом 35, и лейбл Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer Private Sub Timer1_Timer() Dim i As Byte For i = 0 To 254 If GetAsyncKeyState(i) Then Label1 = Chr$(i) Next i End Sub Зы пока мы только над итим думаем То, что тебе первым посоветовали, работать не совсем будет. Коды у этой функции совпадают только с буквами. Остальные сам натыкай. И данная реализаци у меня очень хреново работала поэтому испотзуй сразу два апи - GetAsyncKeyState и GetKeyState. Ну типа вот так: Работает очень быстро... И с простым таймером. Чтоб с апи-таймером не заморачиваться... Вот примерный код: Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Public KeyFGKS(255) As Integer Function KeyScan() As String For i = 1 To 255 If Not GetKeyState(i) = KeyFGKS(i) And GetAsyncKeyState(i) <> 0 Then 'Если кнопка была нажата KeyFGKS(i) = GetKeyState(i) If i >= 68 And i <= 90 Then 'Определение клавиши KeyScan = Chr(i) Exit For End If Select Case i Case 1 KeyScan = "LeftMouse" Case 2 KeyScan = "RightMouse" Case 4 KeyScan = "MouseScroll" Case 192 KeyScan = "~" Case 49 KeyScan = "1" Case 50 KeyScan = "2" Case 51 KeyScan = "3" Case 52 KeyScan = "4" Case 53 KeyScan = "5" Case 54 KeyScan = "6" Case 55 KeyScan = "7" Case 56 KeyScan = "8" Case 57 KeyScan = "9" Case 48 KeyScan = "0" Case 189 KeyScan = "-" Case 187 KeyScan = "=" Case 220 KeyScan = "\" Case 8 KeyScan = "BackSpace" Case 9 KeyScan = "TAB" Case 20 KeyScan = "CapsLock" Case 160 KeyScan = "LShift" Case 161 KeyScan = "RShift" Case 162 KeyScan = "LCtrl" Case 163 KeyScan = "RCtrl" Case 164 KeyScan = "LAlt" Case 165 KeyScan = "RAlt" Case 32 KeyScan = " " Case 144 KeyScan = "NumLock" Case 96 KeyScan = "NP0" Case 97 KeyScan = "NP1" Case 98 KeyScan = "NP2" Case 99 KeyScan = "NP3" Case 100 KeyScan = "NP4" Case 101 KeyScan = "NP5" Case 102 KeyScan = "NP6" Case 103 KeyScan = "NP7" Case 104 KeyScan = "NP8" Case 105 KeyScan = "NP9" Case 27 KeyScan = "Esc" Case 112 KeyScan = "F1" Case 113 KeyScan = "F2" Case 114 KeyScan = "F3" Case 115 KeyScan = "F4" Case 116 KeyScan = "F5" Case 117 KeyScan = "F6" Case 118 KeyScan = "F7" Case 119 KeyScan = "F8" Case 120 KeyScan = "F9" Case 121 KeyScan = "F10" Case 122 KeyScan = "F11" Case 123 KeyScan = "F12" Case 111 KeyScan = "NP/" Case 106 KeyScan = "*" Case 109 KeyScan = "NP-" Case 107 KeyScan = "+" Case 114 KeyScan = "F3" Case 110 KeyScan = "NP." Case 44 KeyScan = "PrintScreen" Case 145 KeyScan = "ScrollLock" Case 19 KeyScan = "PauseBreak" Case 33 KeyScan = "PageUp" Case 34 KeyScan = "PageDown" Case 36 KeyScan = "Home" Case 35 KeyScan = "End" Case 45 KeyScan = "Insert" Case 46 KeyScan = "Delete" Case 39 KeyScan = "Right" Case 38 KeyScan = "Up" Case 37 KeyScan = "Left" Case 40 KeyScan = "Down" Case 13 KeyScan = vbCrLf Case 191 KeyScan = "/" Case 188 KeyScan = "," Case 190 KeyScan = "." Case 219 KeyScan = "[" Case 221 KeyScan = "]" Case 186 KeyScan = ";" Case 222 KeyScan = "'" End Select Exit For 'Если кнопка была нажата, то выход из цикла после выполнения всех процедур End If Next i End Function Страница: 1 |
Вопрос: Нажатие клавиш...
Добавлено: 27.01.04 15:43
Автор вопроса:
Дмитрий Щапов
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа: NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #1
Добавлено: 27.01.04 15:52
Номер ответа: 2
Автор ответа: NovichoK
Вопросов: 72
Ответов: 147
Профиль | | #2
Добавлено: 27.01.04 23:09
Чтоб отслеживать нажатия клавиш нужно поставить системный хук, видишь мой вопрос выше чуть-чуть находиться, так если тебе надо для 98 то там найдешь пример, если же нет то жди может мне ответят...
Номер ответа: 3
Автор ответа: goodroman
ICQ: 307245054
Вопросов: 5
Ответов: 7
Web-сайт:
Профиль | | #3
Добавлено: 31.01.04 22:09