Dieser Parameter benötigt eine Fenster Handle das man durch WinGetHandle erhält.
Heißt das Fenster 'Ich bin ein Fenster' dann bekommst du sein Handle durch
WinGetHandle('Ich bin ein Fenster').
Und wenn ich jetzt in deinem bestimmten Fenster den Script laufen lassen will, was ändere ich dann bzw. wieso funktioniert das überhaupt ? "WinGetHandle" wurde doch von mir garnicht definiert?
(Und bringt es überhaupt was - wenn ich alle Funktionen so code, dass sie in einem bestimmten Fenster laufen - also MouseMove etc. kann ich dann an dem Pc normal arbeiten, oder darf ich auch dann die Maus nicht anfassen?)
Nein, [active] ist kein Fenstertitel sondern ein vordefinierter Begriff der der Funktion WinGetHandel sagt dass es immer den Handel vom Aktiven Fenster zurück geben soll.
MouseMove ändert die Position deines Mauszeigers also darfst du ihn nicht bewegen.
achso ok, dann ist es ohnehin nutzlos, ob das Script dann im aktiven Fenster oder im Hintergrund ausgeführt wird, solange ich nicht nebenher arbeiten kann.
Das handle (die HWND [Hardware number oder sowas ] )
Handle (of a) WiNDow → window handle
Nichts mit Hardware.
Quote:
Originally Posted by BOTCK
Und wenn ich jetzt in deinem bestimmten Fenster den Script laufen lassen will, was ändere ich dann bzw. wieso funktioniert das überhaupt ? "WinGetHandle" wurde doch von mir garnicht definiert?
(Und bringt es überhaupt was - wenn ich alle Funktionen so code, dass sie in einem bestimmten Fenster laufen - also MouseMove etc. kann ich dann an dem Pc normal arbeiten, oder darf ich auch dann die Maus nicht anfassen?)
WinGetHandle() ist eine Standardfunktion von AutoIt. Das Handle eines Fensters an eine Funktion zu übergeben macht unmögliches nicht möglich. PixelSearch() funktioniert ähnlich wie das menschliche Auge. Was das Script bzw. die Funktion nicht "sieht" kann schlicht und ergreifend nicht gefunden bzw. erfasst werden.
Fragst du dich jetzt, wofür dieser Parameter gut ist? Ganz einfach: Die Koordinaten erfolgen relativ zum jeweiligen Fenster und nicht über den Desktop. Du kannst das Fenster also frei bewegen ohne die Funktionalität deines Scripts zu beeinträchtigen.
Das setzt natürlich zwei Dinge voraus:
Alle verwendeten Funktionen müssen mit den Fenster-Koordinaten arbeiten können. Ein normales MouseMove() oder MouseClick() wird hier nicht funktionieren.
Der Arbeitsbereich (Fenster) MUSS sichtbar sein.
Das aktive ("[active]") Fenster kann logischerweise nicht im Hintergrund laufen, da sich diese zwei Zustände ausschließen.
Wie Croco™ schon geschrieben hat kannst du MouseMove() nicht im "Hintergrund" laufen lassen. Selbiges gilt für alle Mouse...() Funktionen.
Alternativ dazu kannst du allerdings ControlClick() (AutoIt Standardfunktion) oder PostMessage (AutoIt UDF von mir, findest du in diesem Forum) verwenden. Hier musst du allerdings beachten, dass dies nicht immer ohne weiteres möglich ist. Bei "modernen" Client basierenden Spielen funktionieren diese meist nur eingeschränkt oder gar nicht.
Um die Grundlegende Frage zu klären:
Ja, es ist bedingt möglich PixelSearch() im "Hintergrund" laufen zu lassen. Bedingt und Hintergrund in Anführungszeichen daher, da dass Fenster immer noch frei sichtbar sein muss. Sollten Aktionen mit der Maus ausgeführt werden, so musst du auf ControlClick() oder die PostMessage Funktion zurückgreifen. Bei Aktionen der Tastatur wäre es ControlSend() oder ebenfalls die PostMessage Funktion.
Hier ist es eigentlich nur eine Frage der Hardware, ich persönlich verwende drei Monitore, einen zu "opfern" tut nicht weh. Notebooks können häufig nur zwei Monitore ansteuern und sollte zudem ein zusätzlicher Monitor fehlen ist das ganze schon problematischer.
Je nach verbauter Hardware und Verwendungszweck wäre es auch möglich das Programm in einer virtuellen Maschine ausführen zu lassen. Diese kann selbst dann noch minimiert im Hintergrund laufen, wenn du MouseMove(), -Click() oder vergleichbares verwendest. Aber das hat nichts mehr mit AutoIt zu tun.
GEXX HACK Fenster zuweisen??? 04/07/2010 - Metin2 - 4 Replies hey, kann mir einer sagen wie man den hack von gexx einem bestimmten metin fenster zuweisen kann???
vielen dank im voraus
geb gerne auch ein thx
Autoit / Metin2 Bot 2 einem Fenster zuweisen? 11/29/2009 - AutoIt - 25 Replies Hallo,
ich habe mal eine Frage an euch.
So also zuerst wollte ich das der Bot 1;2;3 und F1 drückt wegen den Fertigkeiten.
Später möchte ich noch einen Potter einfügen.
Kann ich mit Autoit einen Bot erstellen der 2 Fenster gleichzeitig steuert?
Oder muss ich da mit C++ weitermachen?
Habe die SuFu benutzt, aber nicht gefunden, was mir half.
inaktives FENSTER PIXELSEARCH 12/01/2008 - Guild Wars - 6 Replies HI,
ich habe einen kleinen multi bot geschrieben. leider geht der über viele wege. bisher lasse ich jeden bot kurz wieder aktiv werden damit er pixelsearch nutzen kann. Ich möchte dies aber ändern, hat jemand von euch das schonmal probiert??
Ich versuche gerade die virtuelle Maus in gw auszulesen neuester Versuch mit pixelchecksum, da man dort ja nen hwnd angeben kann.
Vielleicht hat ja wer Ideen, mems gehen aber nuja will ich nicht da ich bald auf WAR umsteige und den updater bisher...