GUICtrlGetState sollte doch bei einer angehackten, sicht- und auswählbren Checkbox den Status 81 ($GUI_CHECKED=1 + $GUI_SHOW=16 + $GUI_ENABLE=64) zurückgeben, es wird aber 80 zurück gegeben. Ich habe zwar schon einen Workaround:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1) ;Variablen müssen vor Benutzung deklariert werden
[/autoit] [autoit][/autoit] [autoit]Global $idChkBoxes[6], $Msg, $iStatus
Global $hGui = GUICreate("Ckeckbox-Demo", 300, 300)
For $i = 0 To 5
$idChkBoxes[$i] = GUICtrlCreateCheckbox($i + 1 & ". Checkbox", 20, 40 + $i * 30, 250)
GUICtrlSetState($idChkBoxes[$i], $GUI_CHECKED)
Next
GUICtrlSetState($idChkBoxes[Random(0, 2, 1)], $GUI_DISABLE)
GUICtrlSetState($idChkBoxes[Random(3, 5, 1)], $GUI_HIDE)
Global $idBtnCheck = GUICtrlCreateButton("Check", 10, 250, 80)
GUISetState(@SW_SHOW)
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit
Case $idBtnCheck
#cs ungewolltes Ergebis wenn Checkbox unsichtbar oder disbled
For $i = 0 To 5
If BitAND(GUICtrlRead($idChkBoxes[$i]), $GUI_CHECKED) Then
ConsoleWrite($i + 1 & ". ist angeCHECKED ")
Else
ConsoleWrite($i + 1 & ". Checkbox ist NICHT angeCHECKED ")
EndIf
ConsoleWrite(GUICtrlRead($idChkBoxes[$i]) & @CRLF)
Next
#ce
For $i = 0 To 5
$iStatus = GUICtrlGetState($idChkBoxes[$i])
If BitAND(GUICtrlRead($idChkBoxes[$i]), $GUI_CHECKED) And $iStatus = BitOR($GUI_ENABLE, $GUI_SHOW) Then
ConsoleWrite($i + 1 & ". Checkbox ist angeCHECKED und auswählbar und sichtbar ")
Else
ConsoleWrite($i + 1 & ". Checkbox ist NICHT angeCHECKED oder nicht auswählbar oder nicht sichtbar ")
EndIf
ConsoleWrite($iStatus & @TAB & GUICtrlRead($idChkBoxes[$i] )& @CRLF)
Next
EndSwitch
WEnd
trotzdem würde mich interessieren warum dies so ist. Ich benutze noch AutoIt 3.3.6.1
mfg autoBert