2012-12-13 9 views
5

Come ottengo lo stato in AutoIt di un pulsante (è disabilitato/disattivato o abilitato)?Leggere lo stato "Abilitato" di un pulsante

Questo per un'applicazione .NET (Windows Forms, VB.NET) in cui il nome del pulsante nel designer di Visual Studio è btnStoreInModule e il testo della proprietà è S&tore in Module. La proprietà Enabled è ciò che mi interessa. Il pulsante è di tipo System.Windows.Forms.Button. Il mio script AutoIt preme il pulsante in questo modo:

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

L'applicazione risponde disattivando il pulsante mentre si sta facendo un'operazione. Al termine dell'operazione, il pulsante viene nuovamente abilitato (non modificato). L'applicazione quando il pulsante Store è disabilitato:

Button in a disabled state. For a .NET application

AutoIt Window Information Tool dà lo stesso risultato sia per il disabled- e lo stato abilitato:

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

ottengo il testo di un controllo TextBox utilizzando (TB_Type è il nome di TextBox nella finestra delle proprietà di Visual Studio):

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

Per il pulsante la riga corrispondente restituisce S&tore in Module (come ci si potrebbe aspettare). AutoIt v3.3.8.1 (2012-01-29).

risposta

6

utilizzare la funzione ControlCommand in questo modo:

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

la funzione restituisce => 1 se "[NAME:button2]" è abilitato e 0 se è disattivato.

+4

"Pulsante2" non deve essere "btnStoreInModule"? –

+1

I pulsanti non hanno nomi. Hanno un testo ("St & minerale in modulo"), potrebbero avere un ID di controllo quando utilizzato in una finestra di dialogo. Quale è la cosa migliore, usa Spy ++ (et al) per vedere l'ID. –

1

Il seguente codice dovrebbe funzionare:

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

La funzione restituisce 1 se il pulsante è abilitato e 0 se è Disabilitato.

Problemi correlati