如何从AutoHotKey控制.NET复选框?
问题描述:
我有一个包含复选框(System.Windows.Forms.Checkbox)的.NET应用程序。 此组件(WindowsForms10.BUTTON.app.0.378734a1)不能在AutoHotKEy中使用“控制,检查”或“ControlGet,Checked”直接控制。如何从AutoHotKey控制.NET复选框?
是否有一种方法可以使用CallDLL控制此组件,或者使用AutoHotKey中的某种CLR托管方式?
答
我最终使用下列的函数:
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
我还假设未检查的背景颜色是灰色阴影。并且该复选标记处于绿色阴影中。
因此,如果任何这些假设是不正确的,它将无法正常工作。
它的作品,非常感谢!它看起来像ControlGetPos不能使用复选框文本来定位组件:/ – Joril 2011-06-14 16:00:44