Notifications
Clear all

[Resolvido] Checar Tecla NumLock

4 Posts
3 Usuários
2 Reactions
1,173 Visualizações
(@alanbc)
Posts: 12
Active Member
Topic starter
 

ola pessoal...
existe algum codigo capaz de checar, ao abrir um form, se a tecla numlock está desligada e nesse caso, liga-la?
pq o sendkeys pode ativar, mas tmb desativa se estiver ativada... e aí nao serve.
se alguem puder postar...
abraço a todos!!!
obrigado!

 
Postado : 17/06/2021 3:45 pm
(@teleguiado)
Posts: 142
Estimable Member
 

@alanbc

Adapte a função no seu código.

 

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Function ISNUMLOCKkOn() As Boolean
    Dim Tmp As Long
    Tmp = GetKeyState(vbKeyNUMLOCK)
  If Tmp = 1 Then
    ISNUMLOCKkOn = True
  Else
    ISNUMLOCKkOn = False
  End If
End Function

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 21/06/2021 9:12 am
AlanBC reacted
(@alanbc)
Posts: 12
Active Member
Topic starter
 

olá... obrigado pela atenção.

consegui a solução:  https://stackoverflow.com/questions/25977933/sendkeys-is-messing-with-my-numlock-key-via-vba-code-in-access-form

Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const kNumlock = 144

Public Function NumLock() As Boolean
NumLock = KeyState(kNumlock)
If (NumLock = False) Then
MsgBox "Numlock desligado. Ativado agora!"
SendKeys "{NUMLOCK}", True
Else: MsgBox "NumLock está ligado"
End If
End Function

Private Function KeyState(lKey As Long) As Boolean
KeyState = CBool(GetKeyState(lKey))
End Function

Sub...()

  Call NumLock

End Sub

 

 
Postado : 21/06/2021 3:04 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Se é só pra manter ligado, sem ficar exibindo mensagens de texto, bastaria:

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Sub LigaNumLock()
  If GetKeyState(VBA.vbKeyNumlock) <> 1 Then SendKeys "{NUMLOCK}", True
End Sub

 
Postado : 21/06/2021 3:17 pm
AlanBC reacted