读取按钮的“启用”状态

问题描述 投票:0回答:2

如何获取

AutoIt
中按钮的 Enabled 状态(禁用/变暗或启用)?它确实适用于属性
Text
,但它似乎不适用于属性
Enabled
(无论按钮状态如何,结果总是相同)(“属性”,如 Visual Studio 中 .NET Windows 窗体意义上的那样) ).

这适用于 .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 <<<<
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属性窗口中文本框的名称(属性“Name”))获取TextBox控件的文本:

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

对于按钮,相应的行返回

S&tore in Module
(正如人们所期望的那样)。

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

.net winforms button autoit
2个回答
7
投票

使用 ControlCommand 函数,如下所示:

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

如果启用

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


2
投票

以下代码应该可以工作:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.