Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Jak sprawdzić czy CapsLock jest włączony?


Rekomendowane odpowiedzi

Opublikowano
#include <WinAPI.au3>Global Const $VK_CAPITAL = 0x14
Global Const $VK_NUMLOCK = 0x90
Global Const $VK_SCROLL = 0x91Global $avVKs[3] = [$VK_CAPITAL, $VK_NUMLOCK, $VK_SCROLL]
Global $avKeys[3] = ["Caps Lock", "Num Lock", "Scroll Lock"]
Global $tKeysFor $i = 1 To 2
    $tKeys = _WinAPI_GetKeyboardState()
   
    For $j = 0 To UBound($avVKs)-1
        If BitAND(1, DllStructGetData($tKeys, 1, $avVKs[$j]+1)) Then
            ConsoleWrite("+ " & $avKeys[$j] & " is toggled." & @CRLF)
        Else
            ConsoleWrite("! " & $avKeys[$j] & " is not toggled." & @CRLF)
        EndIf
    Next    ConsoleWrite(@CRLF)
    Send("{NUMLOCK toggle}{CAPSLOCK toggle}{SCROLLLOCK toggle}")
Next
Func _WinAPI_GetKeyboardState()
    Local $tByteArray, $pByteArray
    Local $aRet
   
    $tByteArray = DllStructCreate('ubyte[256]')
    $pByteArray = DllStructGetPtr($tByteArray)
   
    $aRet = DllCall('user32.dll', 'int', 'GetKeyboardState', 'ptr', $pByteArray)
    If @error Or $aRet[0] = 0 Then Return SetError(1, 0, 0)
    Return $tByteArray
EndFunc
 

http://www.autoitscript.com/forum/topic/97991-how-can-i-check-if-the-caps-lock-number-lock-and-scroll-lock-are-on/

 

 

 

 

 

 

edit

ten lepszy

 

 

Global Const $VK_NUMLOCK = 0x90
Global Const $VK_SCROLL = 0x91
Global Const $VK_CAPITAL = 0x14
MsgBox(0,"Keys","NumLock: " & _GetNumLock() & @LF & _
"Scroll Lock: " & _GetScrollLock() & @LF & _
"Caps Lock: " & _GetCapsLock())Func _GetNumLock()
Local $ret
$ret = DllCall("user32.dll","long","GetKeyState","long",$VK_NUMLOCK)
Return $ret[0]
EndFuncFunc _GetScrollLock()
Local $ret
$ret = DllCall("user32.dll","long","GetKeyState","long",$VK_SCROLL)
Return $ret[0]
EndFuncFunc _GetCapsLock()
Local $ret
$ret = DllCall("user32.dll","long","GetKeyState","long",$VK_CAPITAL)
Return $ret[0]
EndFunc
 
Opublikowano

Lub coś takiego:

 

 

Global Const $VK_NUMLOCK = 0x90
Global Const $VK_SCROLL = 0x91
Global Const $VK_CAPITAL = 0x14




MsgBox(0,"Keys","NumLock: " & _GetNumLock() & @LF & _
"Scroll Lock: " & _GetScrollLock() & @LF & _
"Caps Lock: " & _GetCapsLock())


Func _GetNumLock()
    Local $ret
    $ret = DllCall("user32.dll","long","GetKeyState","long",$VK_NUMLOCK)
    Return $ret[0]
EndFunc


Func _GetScrollLock()
    Local $ret
    $ret = DllCall("user32.dll","long","GetKeyState","long",$VK_SCROLL)
    Return $ret[0]
EndFunc


Func _GetCapsLock()
    Local $ret
    $ret = DllCall("user32.dll","long","GetKeyState","long",$VK_CAPITAL)
    Return $ret[0]
EndFunc
 

 

Opublikowano

Dzięki za odpowiedzi, ten drugi faktycznie lepszy i do tego przejrzysty.

Jeszcze takie pytanie, bo w helpie tego nie ma, jaki kod ma prawy ALT?

W helpie jest tylko jeden dla obu. Chodzi o _IsPressed.

 

@Edit Ok, już mam "A2".

obraz24.png


Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...