Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
138
Assunto : Visual Basic
Titulo: Como controlar o Num Lock via código

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Em um programa que precise de muita digitação numérica, garantir que o Num Lock esteja ligado quando o programa se iniciar pode ser bem útil. Isso é feito com chamadas de API.

Em um módulo colocamos o seguinte código :

Public Const VK_NUMLOCK = &H90

Public Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Public kbArray As KeyboardBytes

Public Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long


As funções GetKeyboardState e SetKeyboardState respectivamente lêem e alteram o estado das teclas no teclado

A função GetKeyboardState resulta em um vetor de 255 posições contendo o estado do teclado. Esse vetor precisa ser definido como um Type, da forma como está acima. No código acima criamos uma variável kbArray deste tipo que será usada durante o programa.

Vamos agora fazer 3 botões : 1 para ligar, outro para desligar e um terceiro para inverter o estado do Num Lock. Veja :


Private Sub cmdDesligar_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 0
SetKeyboardState kbArray
End Sub

A constante VK_NUMLOCK (&H90) contém na verdade a posição no vetor em que está o byte relativo a tecla Num Lock. O que fizemos neste código então foi ler o estado do Num Lock, seta-lo para 0 (desligado) e atribuir o estado novamente ao teclado.

Partindo deste exemplo, ligar o Num Lock é simples :

Private Sub cmdLigar_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 1
SetKeyboardState kbArray
End Sub

Mesmo código que o anterior, mas usando 1 ao invés de 0, para desta forma ligar o Num Lock.

Já no 3o botão precisaremos testar se ele está ligado ou desligado. Veja :

Private Sub cmdInverter_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = IIf(kbArray.kbByte(VK_NUMLOCK) = 1, 0, 1)
SetKeyboardState kbArray
End Sub

O teste foi feito com a função IIF do VB, capaz de realizar um IF em uma linha e devolver um valor de acordo com o resultado.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br