Jump to content

Recommended Posts

  • Moderators
Posted

Info,

GaryFrost produced the code here to do just that. You need to search a bit harder. ;-)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted

Yes you can use GetKeyState and check if it's least-significant bit is set or not which means, toggle or not toggled respectively.

#include <WinAPI.au3>

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

Global $avVKs[3] = [$VK_CAPITAL, $VK_NUMLOCK, $VK_SCROLL]
Global $avKeys[3] = ["Caps Lock", "Num Lock", "Scroll Lock"]
Global $tKeys

For $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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...