【问题标题】:AutoIT GUICtrlSetState/GUICtrlGetState set state is different from get stateAutoIT GUICtrlSetState/GUICtrlGetState 设置状态与获取状态不同
【发布时间】:2013-12-21 06:33:25
【问题描述】:

我的代码需要帮助。

 GUICtrlSetState($input_ID_betonarna,$gui_ENABLE)
 ConsoleWrite(GUICtrlGetState($input_ID_betonarna)&" "& $gui_ENABLE)

输出是: 80 64

预期输出为: 64 64

我知道输出是状态的总和,但我没有任何带有 GUIConstantsEx 值的表。

【问题讨论】:

    标签: autoit


    【解决方案1】:

    查看您的 AutoIt 安装。在“include”子文件夹中,您应该找到定义这些常量的文件 GUIConstantsEx.au3

    Global Const $GUI_SHOW = 16
    Global Const $GUI_HIDE = 32
    Global Const $GUI_ENABLE = 64
    Global Const $GUI_DISABLE = 128
    

    之所以得到 80 的值是因为这是一个位掩码,而控件实际上有 2 个状态:启用并显示,所以:

    $GUI_SHOW = 16
    $GUI_ENABLE = 64
    

    总和是 80,这就是您在输出中得到的。

    编辑:如果您想针对特定状态测试控件的状态,例如切换按钮的状态,则可以使用 BitAND 运算符:

    If BitAND(GUICtrlGetState($cmdOk), $GUI_DISABLE) = $GUI_DISABLE Then
        GUICtrlSetState($cmdOk, $GUI_ENABLE)
    EndIf
    

    【讨论】:

    • 感谢您的完美回答。我的代码现在可以正常工作了。感谢 BitAND 'function' 的提示。
    • 我发现您可以直接从代码编辑器 (SciTE) 打开包含的文件,只需将光标设置在包含的文件名上并按 ALT+I。也许这可以帮助某人......
    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多