如何从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

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

因此,如果任何这些假设是不正确的,它将无法正常工作。

+0

它的作品,非常感谢!它看起来像ControlGetPos不能使用复选框文本来定位组件:/ – Joril 2011-06-14 16:00:44