如何在VB.NET中获取Caps Lock的当前状态?
如何使用VB.NET确定是否激活了Caps Lock如何在VB.NET中获取Caps Lock的当前状态?,.net,windows,vb.net,.net,Windows,Vb.net,如何使用VB.NET确定是否激活了Caps Lock 这是我的。我不是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 ... C版本: 使用
这是我的。我不是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 ...
C版本:
使用系统;
使用System.Windows.Forms;
公共类CapsLockIndicator
{
公共静态void Main()
{
if(控制键已锁定(键已锁定)){
MessageBox.Show(“大写锁定键已打开”);
}
否则{
MessageBox.Show(“大写锁定键已关闭”);
}
}
}
创建一个设置为5毫秒且已启用的计时器。然后制作一个名为
label1
的标签。之后,尝试以下代码(在计时器事件处理程序中)
由works发布的解决方案,但与Me.KeyDown
事件处理程序冲突。我有一个sub,在按下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
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
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