Как вы управляете флажком .NET из AutoHotKey? - PullRequest
3 голосов
/ 23 февраля 2010

У меня есть приложение .NET, которое содержит флажок (System.Windows.Forms.Checkbox). Этот компонент (WindowsForms10.BUTTON.app.0.378734a1) не может напрямую управляться в AutoHotKEy с помощью «Control, Check» или «ControlGet, Checked».

Есть ли способ управления этим компонентом с помощью CallDLL или какого-либо типа CLR-хостинга в AutoHotKey?

1 Ответ

3 голосов
/ 25 февраля 2010

Я использовал следующую функцию:

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

Я также предполагаю, что непроверенный цвет фона - это оттенок серого. И что флажок в оттенке зеленого.

Так что, если какое-либо из этих предположений неверно, оно не будет работать.

...