2012-12-13 28 views
5

Làm cách nào để nhận trạng thái Enabled trong AutoIt nút (tính năng này bị tắt/làm mờ hoặc bật)?Đọc trạng thái 'Đã bật' của một nút

Điều này cho ứng dụng .NET (Windows Forms, VB.NET) trong đó tên của nút trong trình thiết kế Visual Studio là btnStoreInModule và văn bản thuộc tính là S&tore in Module. Tài sản Enabled là những gì tôi quan tâm. Nút này thuộc loại System.Windows.Forms.Button. Tập lệnh AutoIt của tôi nhấn nút như sau:

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

Ứng dụng phản hồi bằng cách tắt nút khi đang thực hiện thao tác. Khi hoạt động kết thúc, nút được bật lại (chưa được quay). Việc áp dụng khi nút Store bị vô hiệu hóa:

Button in a disabled state. For a .NET application

AutoIt Window Information Tool cho kết quả tương tự cho cả disabled- và trạng thái được kích hoạt:

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

tôi nhận được văn bản của một điều khiển TextBox sử dụng (TB_Type là tên của TextBox trong cửa sổ tài sản của Visual Studio):

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

Đối với nút, dòng tương ứng trả về S&tore in Module (như có thể mong đợi). AutoIt v3.3.8.1 (2012-01-29).

Trả lời

6

Sử dụng ControlCommand chức năng như thế này:

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

Chức năng sẽ trở lại => 1 nếu "[NAME:button2]" được kích hoạt và 0 nếu nó bị vô hiệu hóa.

+4

Không nên "button2" là "btnStoreInModule"? –

+1

Nút không có tên. Họ có văn bản ("St & ore in Module"), họ có thể có ID kiểm soát khi được sử dụng trong hộp thoại. Tốt nhất là sử dụng Spy ++ (et al) để xem ID. –

1

Các mã sau đây nên làm việc:

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

Chức năng sẽ trở lại 1 nếu nút được kích hoạt và 0 nếu nó là Disabled.