Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 12:26

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Imagesearch pausieren bis WinKill das Window gekillt hat?

Discussion on Imagesearch pausieren bis WinKill das Window gekillt hat? within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
NeverMeltIce.'s Avatar
 
elite*gold: 0
Join Date: Jul 2013
Posts: 47
Received Thanks: 6
Imagesearch pausieren bis WinKill das Window gekillt hat?

Code:
While 1
				$image2 = _imagesearch("Findbattle.bmp", 1, $k, $l, 0)
				If $image2 = 1 Then
					MouseMove($k, $l, 1)
					MouseClick("left")
				EndIf
				$image = _imagesearch("FindbattleB2.bmp", 1, $y, $x, 0)
				If $image = 1 Then
					MouseMove($y, $x, 1)
					MouseClick("left")
				EndIf
				$image6 = _imagesearch("forfeit.bmp", 1, $n, $m, 0)
				If $image6 = 1 Then
				WinKill("Battling against")
					$zahl = $zahl + 1
					ToolTip("Battles lost: " & $zahl)
				EndIf
				Sleep(300)
			WEnd
(nicht der komplette Code)

Was passiert:

-Es klickt den Findbattle-Button
-Dann den 2.
-Das Battlewindow erscheint
-Es klickt wieder den Findbattle-Button, obwohl es zuerst mit Winkill das Battlewindow schließen sollte und dann erst von vorne beginnen soll.
Dadurch wird das Window nicht gekillt und gelangt einfach in den Hintergrund.

Lösung wäre das Battlewindow irgendwie vor dem Findbattle-Button erscheinen zu lassen, damit ImageSearch den Button erst nach Winkill findet. Funktioniert auch, ist aber sehr umständlich und dämlich. (Mit Sleep habe ich es auch schon versucht, kein Erfolg).


Ideen?
NeverMeltIce. is offline  
Old 11/08/2013, 16:00   #2
 
snow21's Avatar
 
elite*gold: 40
Join Date: May 2007
Posts: 631
Received Thanks: 69
hi du

vieleicht hilft dir das ja weiter

WinActive


WinWaitActive


Jedes fenster hat auch eine eigene ID darüber kannst du das auch einfacher regeln.
snow21 is offline  
Old 11/08/2013, 16:02   #3
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Erstmal zur Codeoptimierung, man kann den Code um einiges kürzen
Code:
While 1
	If _ImageSearch("Findbattle.bmp", 1, $x, $y, 0) Then MouseClick("left", $x, $y)
	If _ImageSearch("FintBattleB2.bmp", 1, $x, $y, 0) Then MouseClick("left", $x, $y)
	If _ImageSearch("forfeit.bmp", 1, $x, $y, 0) Then
		WinKill("Battling against")
		$zahl += 1
		ToolTip("Battles lost: " & $zahl)
	EndIf
	Sleep(300)
WEnd
So sieht der Code doch schon viel sauberer aus.
Es kann sein das einige Fenster es verweigern sich schließen zu lassen, prüf erstmal ob das Fenster wirklich Battling against heißt oder es noch einen Text hat um die Wahrscheinlichkeit des Schließens zu erhöhen.
Du könntest noch Variablen einbauen die abspeichern wo es zuletzt war.
Wenn dein Problem ist das es zu schnell passiert, dann setz z.B. im 1. If eine Variable auf Findbattle oder ähnliches und lass _ImageSearch("Findbattle.bmp", ...) erst triggern wenn die Variable nach WinKill verändert wurde.
alpines is offline  
Thanks
1 User
Old 11/08/2013, 16:05   #4
 
NeverMeltIce.'s Avatar
 
elite*gold: 0
Join Date: Jul 2013
Posts: 47
Received Thanks: 6
Quote:
hi du

vieleicht hilft dir das ja weiter

WinActive
Function WinActive

WinWaitActive
Function WinWaitActive
WinWaitActive funktioniert nicht mit ImageSearch.

Quote:
Es kann sein das einige Fenster es verweigern sich schließen zu lassen, prüf erstmal ob das Fenster wirklich Battling against heißt oder es noch einen Text hat um die Wahrscheinlichkeit des Schließens zu erhöhen.
Habe Winkill mit "Battling against" schon ohne anderen Code getestet und es hat funktioniert.
Aber thx für die Vorschläge, werde ich mal versuchen.
NeverMeltIce. is offline  
Reply


Similar Threads Similar Threads
Für 1-2 Mikrosekunden pausieren
07/17/2013 - C/C++ - 4 Replies
Hi, ich möchte einen Emulator für einen Mikrocontroller programmieren. Der Takt des Controllers liegt bei einem Megaherz und die meisten Instructions brauchen ein oder zwei Maschinenzyklen, d.h. ein oder zwei Mikrosekunden. Dafür ist mein PC zu schnell - Wie bekomme ich es hin, grob die gleiche Geschwindigkeit wie die des Controllers zu erreichen? Die Zeit, die der Emulator für die Instruction an sich braucht, ist denke ich vernachlässigbar. Kann ich das Programm irgendwie...
gui pausieren und beenden
11/12/2012 - AutoIt - 4 Replies
gibt es eine einfache möglichkeit ein script mit einer gui zu pausieren, dass ich im prinzip im code durch einen buttonclick stoppe und durch den gleichen wieder weitermachen kann? oftmals ist mein script außerdem in irgendeiner schleife. deshalb kann ich es auch nicht immer durch Case $msg = $GUI_EVENT_CLOSE $pause = True Exit beenden. kann mir da auch wer nen tip geben? ich wäre euch sehr sehr dankbar, wenn ihr mir bei meinen autoit-problemen helfen könntet xD vielen dank...
Pausieren
07/15/2010 - AutoIt - 18 Replies
wie kann ich einen spambot usw. pausieren, wenn ich einen button drück? was für ne funktion brauch ich da? THX im vorraus MFG xEr0r :mofo:



All times are GMT +1. The time now is 12:27.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.