3

如何EnabledAutoIt中获取按钮的状态(禁用/变暗或启用)?它确实适用于 property Text,但它似乎不适用于 property (无论按钮的状态如何,结果总是相同)Enabled(“properties”,如 Visual Studio 中的 .NET Windows Forms 意义)。

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

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

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

按钮处于禁用状态。 对于 .NET 应用程序

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

可以TB_Type使用(是 Visual Studio 属性窗口中文本框的名称(属性“名称”))获取 TextBox 控件的文本:

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

对于按钮,相应的行返回S&tore in Module(正如人们所期望的那样)。

AutoIt 版本:3.3.8.1 (2012-01-29)。

4

2 回答 2

7

像这样使用ControlCommand函数:

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

如果启用,该函数将返回 => 1 ,如果"[NAME:button2]"禁用,则返回 0。

于 2012-12-13T15:10:04.253 回答
2

以下代码应该可以工作:

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

如果按钮启用,该函数将返回 1,如果禁用,则返回 0。

于 2014-04-08T10:12:31.680 回答