2008-09-12 28 views

Respuesta

12

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.iskeylocked.aspx

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 



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

No soy un experto en VB.NET por lo que sólo PInvoke viene a la mente:

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

Private Const VK_CAPSLOCK = &H14 

If GetKeyState(VK_CAPSLOCK) = 1 Then ... 
1

crear un temporizador que se establece en 5 milisegundos y está habilitado. Luego crea una etiqueta llamada label1. Después, pruebe el siguiente código (en el temporizador).

Public Class Form1 

    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 
End Class 
0

La solución Publicado por .rp funciona, pero entra en conflicto con el controlador de eventos Me.KeyDown. Tengo un sub que llama a una función de inicio de sesión cuando se presiona enter. (mostrado a continuación) El estado My.Computer.Keyboard.CapsLock funciona y no entra en conflicto con 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 
Cuestiones relacionadas