阅读按钮的“已启用”状态

时间:2012-12-13 12:50:15

标签: .net winforms button autoit

如何在按钮的AutoIt中获取Enabled状态(禁用/变暗或启用)?

这适用于.NET应用程序(Windows窗体,VB.NET),其中Visual Studio设计器中按钮的名称为btnStoreInModule,属性文本为S&tore in Module。属性Enabled是我感兴趣的。按钮的类型为System.Windows.Forms.Button。我的AutoIt脚本按下这样的按钮:

ControlClick("My Application", "", "[NAME:btnStoreInModule]")

应用程序通过在执行操作时禁用按钮来响应。操作完成后,再次启用该按钮(不显示)。禁用Store按钮时的应用程序:

Button in a disabled state. For a .NET application

AutoIt Window Information Tool为禁用和启用状态提供相同的结果:

>>>> Window <<<<
Title:    My Application 1.2a6
Class:    WindowsForms10.Window.8.app.0.b7ab7b
Position: -4, 34
Size:     1448, 870
Style:    0x17CF0000
ExStyle:  0x00050100
Handle:   0x000C08DE

>>>> Control <<<<
Class:               WindowsForms10.BUTTON.app.0.b7ab7b
Instance:            21
ClassnameNN:         WindowsForms10.BUTTON.app.0.b7ab7b21
Name:                btnStoreInModule
Advanced (Class):    [NAME:btnStoreInModule]
ID:                  592026
Text:                S&tore in Module
Position:            257, 675
Size:                91, 23
ControlClick Coords: 59, 8
Style:               0x5601000B
ExStyle:             0x00000000
Handle:              0x0009089A

我在Visual Studio的属性窗口中使用(TB_Type是TextBox的名称)获取TextBox控件的文本:

Local $sText = ControlGetText ("My Application", "", "[NAME:TB_Type]")

对于按钮,相应的行返回S&tore in Module(正如人们所期望的那样)。 AutoIt v3.3.8.1(2012-01-29)。

2 个答案:

答案 0 :(得分:6)

使用ControlCommand功能,如下所示:

    $isControlEnabled = ControlCommand($hWin, "", "[NAME:button2]", "IsEnabled", "")

该函数将返回=&gt;如果"[NAME:button2]"已启用,则为1;如果已禁用,则为0。

答案 1 :(得分:2)

以下代码应该有效:

Local $isControlEnabled = ControlCommand("My Application 1.2a6", "", "WindowsForms10.BUTTON.app.0.b7ab7b21", "IsEnabled")
ConsoleWrite($isControlEnabled)

如果按钮为Enabled,则该函数将返回1;如果为Disabled,则返回0。