Hallo,
ich bräuchte mal eure Hilfe ich möchte das:
wenn $a = Bild1 drücke $Button[5] und wenn $a = Bild2 drücke $Button[1] und so weiter ist.
Wie mache ich das am besten mit Case oder For oder While?
Ausserdem Aktiviert er mir das Fenster CLASS:TFCB nicht warum?
MfG Vierus
Code:
#include <string.au3>
#include <ImageSearch.au3>
#include <Array.au3>
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Vierus
Script Function:
Auf 1 oder 2 oder 3 oder 4 oder 5 Klicken
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
WinActivate("[CLASS:TFCB]")
Sleep (2000)
WinWaitActive("[CLASS:TFCB]")
Sleep (2000)
WinActivate("[CLASS:TSplashScreen]")
Sleep (2000)
WinWaitActive("[CLASS:TSplashScreen]")
Sleep (2000)
Dim $Bild[5] ; Array wird definiert
$Bild[0] = "1.bmp" ; bei 0 wird begonnen
$Bild[1] = "2.bmp"
$Bild[2] = "3.bmp"
$Bild[3] = "4.bmp"
$Bild[4] = "5.bmp"
_ArrayDisplay( $Bild, "Bild array" )
Dim $Button[5] ; Array wird definiert
$Button[0] = "5" ; bei 0 wird begonnen
$Button[1] = "4"
$Button[2] = "3"
$Button[3] = "2"
$Button[4] = "1"
_ArrayDisplay( $Button[, "Button array" )
$x1=0
$y1=0
$i=5
$result = _ImageSearch($Bild[$a],1,$x1,$y1,0)
if $result=1 Then
MsgBox(0, "Der Wert ist:", $a)
EndIf
;~ wenn $a = Bild1 drücke $Button[5] und wenn $a = Bild2 drücke $Button[1] und so weiter
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Found",$b)
Exit
Hallo Reeek
Danke
Dann muss ich aber jeden einzelnen Button Deklarieren oder?
und WinActivate meinste hier
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
oder?
Ich meinte aber das hier geht nicht:
WinActivate("[CLASS:TFCB]")
warum?
und das mit dem WinActivate hab' ich falsch gesehen, hab den Code nur überflogen und in einer der letzten Zeilen ein einsames WinWaitActivate gesehen... bin mir nicht ganz sicher, ob du diesen gemeint hast, aber ich meinte diesen:
du solltest dir vielleicht einmal eine andere struktur überlegen.
sobald man mit arrays arbeitet, arbeitet man im normalfall nichtmehr mit switch case abfragen, sondern mit einer combo aus for-schleife und if-abfragen
dazu legst du dir am besten eine struktur an wie:
Code:
$Bild[x] -> $Button[x]
so kannst du in 3 zeilen beliebig viele abfragen realisieren =)
das stimmt, um das Array zu bestimmen eignet sich eine For-Schleife... aber um dann das eigentliche Programm auszuführen, ist eine Switch/Case Schleife besser, wenn du mich fragst.
Ahh macht mich ruig wirrig im Kopf lol
Ich habe bis jetzt nur in VB und Batch Programmiert und dies soll mein erstes Programm werden, wie meinst du das mit den Arrays in einer For/If schleife.
Bitte macht doch mal nen kleines Beispiel in Deutsch und gut lesbar für Noops.
Code:
WinActivate("[CLASS:TFCB]")
Sleep (2000)
WinWaitActive("[CLASS:TFCB]")
Sleep (2000)
WinActivate("[CLASS:TSplashScreen]")
Sleep (2000)
WinWaitActive("[CLASS:TSplashScreen]")
Sleep (2000)
Dim $Bild[5] ; Array wird definiert
$Bild[0] = "1.bmp" ; bei 0 wird begonnen
$Bild[1] = "2.bmp"
$Bild[2] = "3.bmp"
$Bild[3] = "4.bmp"
$Bild[4] = "5.bmp"
_ArrayDisplay( $Bild, "Bild array" )
Dim $Button[5] ; Array wird definiert
$Button[0] = "5" ; bei 0 wird begonnen
$Button[1] = "4"
$Button[2] = "3"
$Button[3] = "2"
$Button[4] = "1"
_ArrayDisplay( $Button, "Button array" )
$x1=0
$y1=0
$result = _ImageSearch($Bild[$a],1,$x1,$y1,0)
Switch
Case
if $result=1 Then
MsgBox(0, "Der Wert ist:", $a)
EndIf
Case
if $a=0 Then
$b=0
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
Case
if $a=1 Then
$b=1
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
Case
if $a=2 Then
$b=2
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
Case
if $a=3 Then
$b=3
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
Case
if $a=4 Then
$b=4
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
Case
if $a=5 Then
$b=5
WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
Sleep (2000)
Send("{ENTER}")
MsgBox(0,"Drücke",$b)
EndIf
EndSwitch
;~ wenn $a = Bild1 drücke $Button[5] und wenn $a = Bild drücke $Button[1] und so weiter
Exit
Dim $Bild[5] ; Array wird definiert $Bild[0] = "1.bmp" ; bei 0 wird begonnen $Bild[1] = "2.bmp" $Bild[2] = "3.bmp" $Bild[3] = "4.bmp" $Bild[4] = "5.bmp"
statt dessen schreibst du:
PHP Code:
Dim $Bild[5] ; Array wird definiert For $i = 0 to 4 Step 1 $Bild[$i] = $i + 1 & ".bmp" Next
leider weiß ich nicht, was dein Script machen soll und kann dir daher nur sehr allgemeine Tipps geben. Klär' uns mal bitte auf, warum du das Programm schreibst.
Ganz einfach ich habe ein Programm das mich beim Start mit einer Abfrage nervt so das ich immer je nach Angezeigtem Text ein Button drücken muss.
Hier mal der Button wenn der Text 5 ist muss ich Button 5 Drücken:
verstehe dein Script leider nicht
so würde ich es mache:
in 1.bmp, 2.bmp, 3.bmp etc... sind die Bilder von der Zahl im Label, also NICHT die Buttons, sondern nur die Zahl!
bei den MouseClicks müssen die X- und Y-Koordinaten durch die Koordinaten des Fensters getauscht werden.
Func _search() For $i = 1 to 5 step 1 $result = ImgSearch(@ScriptDir & $i & ".bmp", 1, 0, 0, 5) If $result <> 0 Then ExitLoop(2) EndIf Next
Switch $i Case 1 MouseClick("left", X, Y, 1, 1) Case 2 MouseClick("left", X, Y, 1, 1) Case 3 MouseClick("left", X, Y, 1, 1) Case 4 MouseClick("left", X, Y, 1, 1) Case 5 MouseClick("left", X, Y, 1, 1) EndSwitch EndFunc While 1 sleep(20) WEnd
Nö geht nicht.
Nagut ich sags euch es geht um das Programm:
das ist Trial und ich will beim Start des Programmes die jewaligen Buttons drücken.
MfG
Vierus
Suche EQ/Yang/Accounts auf Leviathan oder Sobo oder SG (S.25 oder 21) 06/27/2011 - Metin2 Trading - 4 Replies Wie der Titel bereits sagt.
Suche Sachen auf Leviathan, Sobo oder Metin2.Sg
Bezahle mit Paypal oder auf Wunsch extra mit Paysafecards.
Msged mich oder addet mich in Skype: krixxon
Verhandelt wird mit einem Mod oder Middleman.
[S] Gamecard 60 Tage [B] PSC oder Gold oder Keys oder Amazon Gutscheine 11/29/2010 - World of Warcraft Trading - 7 Replies Gamecard 60 Tage 25€ PSC oder Gold auf allen servern oder Keys oder Amazon Gutscheine 40€
einfach mal bieten :)
habe keys von classic bis cata von cata aber nur 2 vorbestellte :D