Я разработал приложение (с vb .net), которое может переключать состояние блокировки колб, нажав на флажок. Я закодировал программу таким образом, что, когда я нажимаю на этот флажок, если он проверяется, блокировка колпачка должна быть включена, и если он не установлен, он должен отключиться. Ниже приведены коды.Проблема с блокировкой колпачков с флажком vb .net
Public Class Form1
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
Private Const VK_CAPITAL As Integer = &H14
Private Const VK_SCROLL As Integer = &H91
Private Const VK_NUMLOCK As Integer = &H90
Private Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Private Const KEYEVENTF_KEYUP As Integer = &H2
Private Sub checkbutton_caps_CheckedChanged(sender As Object, e As EventArgs) Handles checkbutton_caps.CheckStateChanged
If checkbutton_caps.Checked = True Then
Call keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0)
checkbutton_caps.Image = Image.FromFile("resources\btn_ico_caps_on.png")
ElseIf checkbutton_caps.Checked = False Then
Call keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
checkbutton_caps.Image = Image.FromFile("resources\btn_ico_caps_off.png")
End If
End Sub
End Class
Теперь проблема в том, что она не работает должным образом. Если я установил флажок, изменится только изображение флажка, но не состояние блокировки колпачка. Статус блокировки блокировки изменяется только тогда, когда я дважды нажимаю на флажок. Поэтому мне нужно дважды щелкнуть по флажку, чтобы переключить блокировку колпачков. Я подозреваю, что есть проблема в том, как я использовал условные утверждения.
... Почему? Является ли ваш ключ блокировки кнопок сломанным? –
@CodyGray Нет, его не сломал, я просто хочу создать виртуальную клавиатуру. – Xlam
Пуск -> Выполнить -> osk.exe –