Как мне узнать текущее состояние Caps Lock в VB.NET? - PullRequest
9 голосов
/ 12 сентября 2008

Как узнать, активирован ли Caps Lock, с помощью VB.NET?

Это продолжение моего предыдущего вопроса .

Ответы [ 4 ]

14 голосов
/ 12 сентября 2008

Метод Control.IsKeyLocked (ключи) - MSDN

Imports System
Imports System.Windows.Forms
Imports Microsoft.VisualBasic

Public Class CapsLockIndicator

    Public Shared Sub Main()
        if Control.IsKeyLocked(Keys.CapsLock) Then
            MessageBox.Show("The Caps Lock key is ON.")
        Else
            MessageBox.Show("The Caps Lock key is OFF.")
        End If
    End Sub 'Main
End Class 'CapsLockIndicator

C # версия:

using System;
using System.Windows.Forms;

public class CapsLockIndicator
{
    public static void Main()
    {
        if (Control.IsKeyLocked(Keys.CapsLock)) {
            MessageBox.Show("The Caps Lock key is ON.");
        }
        else {
            MessageBox.Show("The Caps Lock key is OFF.");
        }
    }
}
2 голосов
/ 12 сентября 2008

Я не эксперт в VB.NET, поэтому мне приходит в голову только PInvoke:

Declare Function GetKeyState Lib "user32" 
   Alias "GetKeyState" (ByValnVirtKey As Int32) As Int16

Private Const VK_CAPSLOCK = &H14

If GetKeyState(VK_CAPSLOCK) = 1 Then ...
1 голос
/ 28 марта 2015

Создайте таймер, который установлен на 5 миллисекунд и включен.
Затем сделайте ярлык с именем label1. Затем попробуйте следующий код (в обработчике событий таймера).

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If My.Computer.Keyboard.CapsLock = True Then
        Label1.Text = "Caps Lock Enabled"
    Else
        Label1.Text = "Caps Lock Disabled"
    End If
End Sub
0 голосов
/ 28 марта 2017

Решение, опубликованное .rp , работает, но конфликтует с обработчиком событий Me.KeyDown.
У меня есть саб, который вызывает функцию входа в систему при нажатии Enter (показано ниже).
Состояние My.Computer.Keyboard.CapsLock работает и не конфликтует с Me.Keydown.

Private Sub WindowLogin_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown

    If Keyboard.IsKeyDown(Key.Enter) Then
        Call SignIn()
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...