如何从AutoHotKey控制.NET复选框?

时间:2010-02-23 08:55:26

标签: .net autohotkey

我有一个.NET应用程序,其中包含一个复选框(System.Windows.Forms.Checkbox)。 使用“Control,Check”或“ControlGet,Checked”在AutoHotKEy中无法直接控制此组件(WindowsForms10.BUTTON.app.0.378734a1)。

有没有办法使用CallDLL或AutoHotKey中的某种CLR托管来控制这个组件?

1 个答案:

答案 0 :(得分:3)

我最终使用了以下功能:

IsChecked(Check_box_name)
{
    ControlGetPos,X,Y,W,H,%Check_box_name%
    Loop % H - 7
    {
        CY := Y + 1 + A_index
        Loop % H - 7
        {
            CX := X + 1 + A_index
            PixelGetColor,color,%CX%,%CY%,RGB
            R := (color >> 16) & 0xFF
            G := (color >> 8) & 0xFF
            B := color & 0xFF
            If (Abs(R - B) < 10) && (Abs(R - G) > 10)
            {
                return true
            }
        }
    }
    return false
}

我使用高度(H)作为复选框的宽度。 我为边框减去1像素,为边距减去另外3个像素。 因此:H - (1 + 2 * 3)= H-7

我还假设未经检查的背景颜色是灰色阴影。并且复选标记是绿色阴影。

因此,如果这些假设中的任何一个是不正确的,那么它将无效。