Jump to content
Sign in to follow this  

ControlClick a checkbox inside a listbox

Recommended Posts


Hello there,

I have recently downloaded BOLOPatch v4.00 for Just Cause 2 and decided to make a hotkey application for it so I can use key combinations with my gamepad in Just Cause 2 to activate certain cheats. 

The joystick reading is going well, however I have come to a road block. I cannot for the life of me get ControlClick to work on the checkboxes for the cheats!

The main problem is that the checkboxes seem to be inside a ListBox element, and I cannot get the controlID of individual items. I tried using AutoIt Window Info and  Winspector Spy, but neither were a help.

How can I get it to work? Here is the screen shots and my current code:




Local $joy,$coor,$h,$s,$msg
$joy    = _JoyInit()

;___________________________ KOWN COMBOS ____________________________________
; TRIANGLE + L1 = 24 (Set to detach multi hooks)
; START + L1 = 144 (Open Steam Window)
; START + R1 = 160 (Take screen shot [del] )
; L1 + R1 = 48 (go into slow motion [q] )
; Select + Start = 192 (close this program)

if(WinExists("[CLASS:Just Cause 2]")) Then

    $lastCode = 0
    while 1
        ;Gets the button flag of the buttons from joystick 0 (buttons are index 7)
        $coords = _GetJoy($joy,0)
        $bFlag = $coords[7]
        if($bFlag <> $lastCode AND $bFlag <> 0) Then
            ConsoleWrite("Input: " & $bFlag & @CRLF)

                Case 24     

                    ConsoleWrite("Output: TRIANGLE + L1 (Multihook Toggle)" & @CRLF)
                    ;This does not seem to work, no matter the coords or the controlID's I stick in!
                    $var = ControlClick("BOLOPatch v4.00","","[CLASS:WindowsForms10.LISTBOX.app.0.378734a; INSTANCE:1]","left",1,8,52)
                    ConsoleWrite("Output: " & $var & @CRLF)
                Case 144        
                    ConsoleWrite("Output: START + L1 [Shift+Tab] (steam overlay)" & @CRLF)
                Case 160        
                    ConsoleWrite("Output: START + R1 [del] (steam screenshot)" & @CRLF)
                Case 48     
                    ConsoleWrite("Output: R1 + L1 [q] (slow motion)" & @CRLF)
                $lastCode = $bFlag
        if($bFlag == 192) Then
            ConsoleWrite("Output: START + SELECT (exit this application)" & @CRLF)


    ConsoleWriteError("Just Cause 2 is not running!" & @CRLF)

$lpJoy=0 ; Joyclose

;   _JoyInit()
Func _JoyInit()
    Local $joy
    Global $JOYINFOEX_struct    = "dword[13]"
    if @error Then Return 0
    DllStructSetData($joy, 1, DllStructGetSize($joy), 1);dwSize = sizeof(struct)
    DllStructSetData($joy, 1, 255, 2)             ;dwFlags = GetAll
    return $joy
;   _GetJoy($lpJoy,$iJoy)
;   $lpJoy  Return from _JoyInit()
;   $iJoy   Joystick # 0-15
;   Return  Array containing X-Pos, Y-Pos, Z-Pos, R-Pos, U-Pos, V-Pos,POV
;          Buttons down
;          *POV This is a digital game pad, not analog joystick
;          65535   = Not pressed
;          0       = U
;          4500 = UR
;          9000 = R
;          Goes around clockwise increasing 4500 for each position
Func _GetJoy($lpJoy,$iJoy)
    Local $coor,$ret
    Dim $coor[8]
    DllCall("Winmm.dll","int","joyGetPosEx", _
            "int",$iJoy, _
    if Not @error Then
        $coor[0]    = DllStructGetData($lpJoy,1,3)
        $coor[1]    = DllStructGetData($lpJoy,1,4)
        $coor[2]    = DllStructGetData($lpJoy,1,5)
        $coor[3]    = DllStructGetData($lpJoy,1,6)
        $coor[4]    = DllStructGetData($lpJoy,1,7)
        $coor[5]    = DllStructGetData($lpJoy,1,8)
        $coor[6]    = DllStructGetData($lpJoy,1,11)
        $coor[7]    = DllStructGetData($lpJoy,1,9)
    return $coor

Share this post

Link to post
Share on other sites


Please read the Forum rules (the link is also at bottom right of each page) - particularly the bit about not discussing game automation - before you post again. Thread locked. :naughty:

But welcome to the AutoIt forum - and see you soon with a legitimate question I hope. :)


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:


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


Share this post

Link to post
Share on other sites
This topic is now closed to further replies.
Sign in to follow this