2012-12-13 108 views
5

如何獲取按鈕的狀態AutoIt(無論是禁用/調暗還是啓用)?閱讀按鈕的「已啓用」狀態

這適用於Visual Studio設計器中的按鈕名稱爲btnStoreInModule且屬性文本爲S&tore in Module的.NET應用程序(Windows Forms,VB.NET)。該物業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給出了兩個disabled-和啓用狀態相同的結果:

>>>> 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 

我得到使用TextBox控件的文本( TB_Type是在Visual Studio的屬性窗口中的TextBox的名稱):

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

對於該按鈕,相應的行返回S&tore in Module(如您所期望的那樣)。 AutoIt v3.3.8.1(2012-01-29)。

回答

6

使用ControlCommand功能是這樣的:

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

該函數將返回=> 1,如果"[NAME:button2]"啓用和0,如果它被禁用。

+4

不應該「button2」是「btnStoreInModule」? –

+1

按鈕沒有名稱。他們有文本(「模塊中的St&ore」),他們在對話框中使用時可能有控制ID。哪一個最好,用Spy ++(et al)來查看ID。 –

1

下面的代碼應該工作:

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

該函數將返回1,如果該按鈕被啓用和0,如果它被禁用。