vierus
Goto Top

Mit AutoIT auf Button drücken.

Hallo da ich mich gerade einarbeite in AutoIT und es für mich neu Land ist Hoffe ich auf eure Hilfe.

Hallo lieber Helfer
Mein Problem ist das ich auf den Button 1 Klicken will aber ich kriegs irgendwie nicht hin.(ja Button 1 nicht 5 face-smile )
Mein versuche mit:

WinWait("Fenstertitel", "beliebiger Text aus dem Fenster - dient zum unterscheiden", [optional ein TimeOut])
ControlCommand ( "title", "text", controlID, "command" [, "option"] )
ControlClick("Fenstertitel", "FensterText", "Name des zu bearbeitenden Objektes")

waren bisher erfolglos müsste doch aber in der abfolge so gehen oder?

Da ich kein Fenster Titel habe kann ich auch die ID:1115314 benutzen?

Hier der Button auszug vom Info tool:
 
>>>> Window <<<<
Title:	
Class:	TSplashScreen
Position:	510, 676
Size:	500, 200
Style:	0x96000000
ExStyle:	0x00010000
Handle:	0x00030200

>>>> Control <<<<
Class:	TColorButtonNF
Instance:	5
ClassnameNN:	TColorButtonNF5
Name:	
Advanced (Class):	[CLASS:TColorButtonNF; INSTANCE:5]
ID:	1115314
Text:	1
Position:	55, 156
Size:	50, 22
ControlClick Coords:	25, 12
Style:	0x5C01000B
ExStyle:	0x00000000
Handle:	0x001104B2

>>>> Mouse <<<<
Position:	590, 844
Cursor ID:	0
Color:	0x6576A2

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
5
4
3
2
1

>>>> Hidden Text <<<<
MfG
Vierus

Content-ID: 167826

Url: https://administrator.de/contentid/167826

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

vossi31
vossi31 10.06.2011 um 08:34:28 Uhr
Goto Top
Hallo Vierus,

versuche es mal so:

WinWaitActive("","5") ; oder anstatt "5" "4","3","2" ,"1"
Send("!s") ; wenn "s" der Shortkey für den Button wäre

Der Button sollte schon einen Shortkey haben oder du sendest alternativ eine Aktion wie Enter:

Send("{ENTER}")


Aber da du hier ein unbenanntes Fenster mit einem "Button 1" fernsteuern willst, frage ich mich ob du das Konzept vertstanden hast.
Willst du evtl. selbst eine GUI erstellen - dann geht man anders vor?

Henning
Vierus
Vierus 10.06.2011 um 13:58:54 Uhr
Goto Top
Hallo Henning

Danke für die schnelle Antwort.
Es funktioniert auch aber jetzt kommts es gibt einen Text in dem "TSplashScreen" und zwar folgender:
"Drücken Sie 3 um das Programm zu Starten"
darunter sind dann die Buttons
[1] [2] [3] [4] [5]

Das ganze habe ich per VB6 gemacht und ein zufallswert eingebaut bei der Zahl im Text und das wenn der Text "Drücken Sie 3" ist dann muss Button [3] gedrückt werden.

Also brauche ich noch eine Variable, wie bekomm ich diese aus dem Text?
Habs so versucht:
$text = WinGetText ( "[CLASS:TSplashScreen]" [, "Drücken Sie 3 um das Programm zu Starten"] )
MsgBox(0,'Information WinGetText', 'Text von Programm: ' & $text)
aber es klappt nicht.
Und noch ein Problem er Aktiviert mir nicht das Fenster sondern wartet drauf bis es Aktiviert ist warum geht das nicht mit:
If WinActive("[CLASS:TSplashScreen]") Then
MsgBox(0, "", "Das Fenster ist aktiv")
EndIf

Gruß Vierus
vossi31
vossi31 10.06.2011 um 15:45:04 Uhr
Goto Top
Hallo Vierus,

wird dieser Text "Drücken Sie x um das..." als visible Text im AutoIt Windows Info angezeigt? (Wenn nein --> weiss ich nicht spontan) Wenn ja würde ich folgendes versuchen.

$text = WinGetText ( "" ,"Drücken Sie")
MsgBox(0,'Information WinGetText', 'Text von Programm: ' & $text)

Jetzt sollte der komplette Text ab "Drücken Sie" in $text stehen. Auf Stelle 13 also 1,2,3,4,5
Dann abhängig davon 1 bis 5 mal

Send("{TAB}")

und dann

Send("{ENTER}")

Viel Erfolg

Henning
Vierus
Vierus 11.06.2011 um 00:12:59 Uhr
Goto Top
Hallo Henning

Also ich bin schon mal weiter meinen 2. Fehler habe ich auch schon bemerkt u.z.w. WinActive ist WinActivate naja gut muss man halt mal richtig gucken stimmets. face-smile

So nu denn, nein der Text wird nicht im AutoIt Windows Info Tool Angezeigt und mit send Tab kann ich nicht Arbeiten da ich keine tab reihenfolge festgelegt habe und Tab im Fenster auch nix bewirkt.

$text = WinGetText ( "" ,"Drücken Sie")
MsgBox(0,'Information WinGetText', 'Text von Programm: ' & $text)
Ausgabe ist: 0 (Heuel hab sogar AutoItSetOption("WinDetectHiddenText", 1) gesetzt.)

Nützt mir das handel eigentlich was ?(den den wert bekomm ich)
Und wo verwende ich dies Advanced (Class):[CLASS:TColorButtonNF; INSTANCE:5].(z.b. die INSTANCE auf ne Variable legen?oder in verwendung mit ControlClick das muss doch auch gehen oder?)
Alles an Daten die ich habe, hatte ich im ersten Posting gepostet und die Daten vom TSplashScreen sind leer.
Wie bekomm ich das nur hin hmmm,lese seit stunden ach Tagen die einzelnen AutoIt Befehle durch und find keine Lösung.

Gruß
Vierus

@andere traut euch mal zu Helfen
Vierus
Vierus 11.06.2011 um 21:47:13 Uhr
Goto Top
Hey
Ich hab die lösung hier der Code
$result = _ImageSearch("1.bmp",1,$x1,$y1,0)  
if $result=1 Then
	WinActivate("[CLASS:TSplashScreen]")  
	WinWaitActive("[CLASS:TSplashScreen]","1")  
Sleep (2000)
Send("{ENTER}")  
	MsgBox(0,"Found","Found 1")  
EndIf

Gruß Vierus