[.NET] Перехват нажатия клавиш.
Здравствуйте, с этой статье я покажу как средствами VB.NET можно перехватить нажатие клавиш клавиатуры.
Video
Я создал новый проект, на который добавил RichTextBox, в котором будет высвечивать "лог" нажатых клавиш.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Также добавим таймер на форму.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Перейдем к коду.
Вставим эти строку в начало кода.
Код:
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Keys) As Integer
Dim keysa As New List(Of Keys)
[Ссылки могут видеть только зарегистрированные пользователи. ]
Теперь создадим саму функцию отлова нажатия кнопки на вашей клавиатуре.
Код:
Private Function keyboard(ByVal key As Keys)
Const KEY_DOWN As Integer = &H8000
If GetKeyState(key) And KEY_DOWN Then
RichTextBox1.AppendText(key.ToString & " " & TimeOfDay & vbCrLf) ' Если клавишу нажмут, в RichTextBox1 добавит строку с названием кнопки и времинем нажатия.
End If
End Function
Далее переходим к коду таймера:
Код:
For I = 0 To keysa.Count - 1
keyboard(keysa.Item(I)) 'Проверяем нажатие кнопки в цикле.
Next
Теперь перейдем к событию загрузки формы.
Код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
keysa.Add(Keys.LShiftKey)
keysa.Add(Keys.RShiftKey)
keysa.Add(Keys.ControlKey)
keysa.Add(Keys.LWin)
keysa.Add(Keys.Space)
keysa.Add(Keys.Menu)
'....
'Так можно добавить интересующие вас кнопки.
Timer1.Interval = 200
Timer1.Start() 'запускаем таймер
End Sub
Собственно все.
Все материалы собирал с иностранных сайтов. Половину делал сам. Исходник:
[Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось OrBiT_DaRk; 08.05.2013 в 19:56.
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.