Case oder For oder While?

06/18/2011 22:20 Reeek#16
lade mir die Datei gerade runter, mal sehen ob mein Script wirklich nicht klappt :)

bei mir kommt leider das Fenster nicht xD was muss man dafür machen?
06/19/2011 11:46 Vierus.exe#17
Schließen und neu Starten dann kommt es bei mir nutze es aber schon 30 Tage.
Guck mal bei Regedit ob bei dir was anderes Steht:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ LEGACY_******\0000]
"Service"="*****"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="****** kernel mode driver"
"Capabilities"=dword:00000000
"Driver"="{8ECC055D-047F-11D1-A537-0000F8753ED1}\\0001"

Warum kann ich das nicht mit den arrays definiren was ich will das ist doch übersichtlicher.
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" )

While 1
	For $a = 1 To 5 step 1
		$x1=0
        $y1=0
	$result = _ImageSearch(@ScriptDir & $a & ".bmp",1,$x1,$y1,0)
		If $result = 1 Then 
MsgBox(0, "Der Wert ist:", $a)
		
		EndIf
		Next
	
	Switch $a
    Case 1
		$b=0
		WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",$b)
	Case 2
		$b=1
		WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",$b)
	Case 3
		$b=2
		WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",$b)
	Case 4
		$b=3
		WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",$b)
	Case 5
		$b=4
		WinWaitActive("[CLASS:TSplashScreen]",$Button[$b])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",$b)
EndSwitch
	ExitLoop(2)
	WEnd
		
		

;~ wenn $a = Bild1 drücke $Button[5] und wenn $a = Bild drücke $Button[1] und so weiter
Exit
Ist doch mein erster Code also so Ausführlich wie möglich.:rolleyes:
Die For schleife geht schon aber so lern ich ja nicht wie es mit den Arrays geht und dafür sind die doch da, zur definition von Variablen also müsste das doch auch gehen.
$result = _ImageSearch(@ScriptDir & $Bild[$a],1,$x1,$y1,0)
06/19/2011 16:22 Reeek#18
aah, jetzt verstehe ich den Code! So kannst du es natürlich auch machen... ist aber unnötig kompliziert, aber zum lernen ganz gut. Wieso arbeitest du eigentlich so viel mit WinWaitActivate? Hast du 2 Fenster?
06/19/2011 18:30 Vierus.exe#19
Jap das erste ist das Hauptfenster und das 2. ist der Splash der sich öffnet wo die Zahl und die buttons kommen. Wie müsste das dann aussehen das da oben läuft ja so nicht ganz.
MIT Arrays Bitte.
06/19/2011 19:06 Reeek#20
willst du, dass der Bot selbst draufdrückt oder nur ausgibt, welche Zahl da steht?
06/19/2011 19:43 Vierus.exe#21
Beides wenns geht kann man ja auch auskomentieren.
Fertig soll der Bot dann:
1. Das Programm Starten (der Bot kommt dann in den Autostart)
2. 5-10 sekunden warten bis die Zahl erscheint
3. dann (mir sagen welche es ist,zur Prüfung und zum Verständniss)
4. dann den Button drücken und mir sagen welchen er gedrückt hatt(möglichst mal mit dem Handle und Controlklick arbeiten zum bessern Verstehen)
5. das Fenster schließen und Bot Beenden

MfG
Vierus
06/19/2011 21:12 Reeek#22
muss dir bei den WinActivate jetzt mal vertrauen, bekomme das doofe Fenster einfach nicht xD

PHP Code:
#include <array.au3>
WinActivate("[CLASS:TFCB]")
WinWaitActive("[CLASS:TFCB]")
WinActivate("[CLASS:TSplashScreen]")
WinWaitActive("[CLASS:TSplashScreen]")
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"
For $a 0 to 4 step 1
    $result 
_ImageSearch($Bild[$a],1,0,0,0)
    If 
$result<>0 Then
        MsgBox
(0"Der Wert ist:"$a)
        
exitloop(2)
    EndIf
Next

send
("{enter}")
select $a
case 1
    MouseClick
("left"XY von button1)
case 
2
    MouseClick
("left"XY von button2)
case 
3
    MouseClick
("left"XY von button3)
case 
4
    MouseClick
("left"XY von button4)
case 
5
    MouseClick
("left"XY von button5)
EndSelect
Exit 
06/19/2011 21:48 Vierus.exe#23
Syntax Error bei :
******************** : ERROR: _ImageSearch() called with Const or expression on ByRef-param(s).
$result = _ImageSearch($Bild[$a],1,0,0,0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Hmm
Kann man das Array auch so setzen?
$Bild[0] = ("1.bmp",1,0,0,0)
der liest aber die Komas nicht.
06/19/2011 21:56 Reeek#24
nja, nächster test:

PHP Code:
#include <array.au3>
#include <imagesearch.au3>
WinActivate("[CLASS:TFCB]")
WinWaitActive("[CLASS:TFCB]")
WinActivate("[CLASS:TSplashScreen]")
WinWaitActive("[CLASS:TSplashScreen]")
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"
For $a 0 to 4 step 1
    $result 
_ImgSearch($Bild[$a])
    If 
$result<>0 Then
        MsgBox
(0"Der Wert ist:"$a)
        
exitloop(2)
    EndIf
Next

send
("{enter}")
select 
case $a 1
    MouseClick
("left"11)
case 
$a 2
    MouseClick
("left"1)
case 
$a 3
    
    MouseClick
("left"1)
case 
$a=4
    MouseClick
("left"1)
case 
$a=5
    MouseClick
("left"11)
EndSelect
Exit  

 
Func _ImgSearch($sPic$iTimeout 1$bClick 1$iTol 5)
     
Local $iX 0$iY 0$bResult 0$iTimer TimerInit()
     
$aPics StringRegExp($sPic'([^|]+)'3)

     While 
TimerDiff($iTimer) < $iTimeout
         
For $i 0 To UBound($aPics) - 1
             $bResult 
_ImageSearch(@ScriptDir "/Data/" $aPics[$i] & ".bmp"1$iX$iY$iTol)
             If 
$bResult 1 Then ExitLoop(2)
             
Sleep(50)
         
Next
     WEnd
         

     
Return $bResult
 EndFunc   
;==>_ImgSearch 
06/19/2011 22:18 Vierus.exe#25
Es kommt nur Drücke 1 warum das den.
Also fehlt ja die andere Msg box.
Code:
#include <array.au3>
#include <imagesearch.au3>
WinActivate("[CLASS:TFCB]")
WinWaitActive("[CLASS:TFCB]")
WinActivate("[CLASS:TSplashScreen]")
WinWaitActive("[CLASS:TSplashScreen]")
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"

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"
For $a = 0 to 4 step 1
    $result = _ImgSearch($Bild[$a])
    If $result<>0 Then
        MsgBox(0, "Der Wert ist:", $a)
        exitloop(2)
    EndIf
Next

	Switch $a
    Case 1
		WinWaitActive("[CLASS:TSplashScreen]",$Button[0])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",5)
	Case 2
		WinWaitActive("[CLASS:TSplashScreen]",$Button[1])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",4)
	Case 3
		WinWaitActive("[CLASS:TSplashScreen]",$Button[2])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",3)
	Case 4
		WinWaitActive("[CLASS:TSplashScreen]",$Button[3])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke",2)
	Case 5
		WinWaitActive("[CLASS:TSplashScreen]",$Button[4])
        Sleep (2000)
        Send("{ENTER}")
	    MsgBox(0,"Drücke", 1)
EndSwitch
Exit  

 Func _ImgSearch($sPic, $iTimeout = 1, $bClick = 1, $iTol = 5)
     Local $iX = 0, $iY = 0, $bResult = 0, $iTimer = TimerInit()
     $aPics = StringRegExp($sPic, '([^|]+)', 3)

     While TimerDiff($iTimer) < $iTimeout
         For $i = 0 To UBound($aPics) - 1
             $bResult = _ImageSearch(@ScriptDir & "/Data/" & $aPics[$i] & ".bmp", 1, $iX, $iY, $iTol)
             If $bResult = 1 Then ExitLoop(2)
             Sleep(50)
         Next
     WEnd
         

     Return $bResult
 EndFunc   ;==>_ImgSearch
06/20/2011 17:06 Vierus.exe#26
:cool::cool::cool::cool::cool::cool::cool::cool::c ool::cool::cool::cool::cool:

DANKE dir Reeek

:pimp::pimp::pimp::pimp::pimp::pimp::pimp::pimp::p imp::pimp::pimp::pimp:

ich habs jetzt soll ichs Veröffentlichen?:p
MfG

Vierus
06/20/2011 23:13 Reeek#27
gute Arbeit :) wieso nicht, hau's rein und gug, obs irgendwer braucht - wenn nicht ist auch egal