PushTheButton, ermöglicht Mausklick auf sonst nicht erreichbare Grafiken UPDATE 1.36

  • Hi,
    ich muss mich mal reinknien, aber bei der Erstellung dieses Scriptes war mir ein Memory-leak in einer der GDI-Funktionen aufgefallen, imho _GDIPlus_BitmapLockBits(). Das wurde auch irgendwann gefixt...

    Techmix,
    ich habe auch einige Popupcloser erstellt, die hatten aber immer den Vorteil, dass ein eigenes FENSTER aufgemacht wurde! Also frage ich alle 100ms das Fensterhandle des obersten Fensters ab, und wenn dieses das "Popup" ist, startet erst PtB.

    /EDIT/ Du hast recht, im Beispiel zu PtB fehlt ein dispose....
    guck mal im PtB-Script Zeile 920/921. Da sind 2 Zeilen auskommentiert

    [autoit]

    ; _GDIPlus_BitmapUnlockBits($pbitmap, $BitmapData)
    ;_GDIPlus_ImageDispose($pBitmap) zerstört die pixeldatastruct, daher erst später!!!

    [/autoit]

    die gehören ans Ende des Beispiels-Scripts!

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (14. Januar 2011 um 12:19)

  • Woow... bin grad hier rübergestolpert... das ist ja grenzgenial !!! Respekt... gut gemacht.
    Übrigens hab ich vor langer Zeit mal ein Makro-Programm verwendet, dass genau auf diesem screenshot-Prinzip beruht...

    Es nennt sich Sikuli - http://sikuli.org/

    Auf der Webseite finden sich auch zahlreiche Beispiele zum Einsatz...
    Da es kostenlos ist (ich glaube sogar Open-Source) denke ich mal, dass niemand was dagegen hat, wenn ich hier Werbung dafür mach :)
    Wär vielleicht mal ne Idee, sowas in AutoIt umzusetzen... quasi PushTheButton nur ein bisschen erweitert als Macro-Recorder...

    • Offizieller Beitrag

    Hi Andy,

    Ich habe es getestet und es funktioniert in einem Fall sehr gut. In einem anderen funktioniert das Bewegen der Maus direkt nach dem Speichern der Auswahl perfekt, aber das sofort angeworfene Testen mit dem Button liefert kein Ergebnis. Operieren die beiden auf verschiedenen Daten?

    Danke für die Infos!
    Johannes

  • Hi Pee,
    schön, dass du den Thread mal wieder aus der Versenkung holst!
    Erinnert mich daran, dass ich das aufwendige "Gefrickel" mit der Suche nach den passenden Pixeln in einer einzigen Zeile ASM-Code erschlagen könnte :D , das würde sicher 300 Zeilen Code und die prospeed.dll ersetzen...

    Zitat

    In einem anderen funktioniert das Bewegen der Maus direkt nach dem Speichern der Auswahl perfekt, aber das sofort angeworfene Testen mit dem Button liefert kein Ergebnis.

    Das könnte daran liegen, dass der Button während des MouseOver eine andere Farbe erhält.
    Deshalb habe ich die Möglichkeit eingebaut, (optisch) den Mousecursor zu versetzen (im Traymenu Mausversatz).

    Den Mousecursor kann man nach oben oder nach unten versetzen.

    Damit wird erreicht, daß geMouseOver-te bzw. im Fensterfokus stehende Buttons den gewünschten Zustand haben, bzw. nicht haben^^. Probiere das einfach mal aus....

    • Offizieller Beitrag

    Hi Andy,

    Danke für die prompte Antwort!
    Das mit dem Mausversatz hatte ich verstanden (sehr gute Idee!) und genutzt. Das sollte es also eigentlich nicht sein… Werde es aber morgen oder übermorgen noch mal testen unter dem Aspekt.
    Geschwindigkeit (ich suche ca. 16x16 Pixel auf 2 Monitoren) war für mich absolut ausreichend :). Wobei schneller natürlich nie schadet ;).

    Johannes

  • Hi,

    Zitat

    (ich suche ca. 16x16 Pixel auf 2 Monitoren)

    angeblich funktioniert der Multi-Monitorbetrieb, ich selbst habs noch nie getestet^^

    /EDIT/
    Erstelle vom 2. Monitor mit PtB und CTRL+ALT+m eine Bitmap des Lupenfensterinhalts.
    Entspricht der Inhalt dieser Datei dem gespeicherten Bildausschnitt?
    Falls das Blitten vom 2. Screen nicht funktioniert, muss ich mir etwas einfallen lassen bzw. in diesem Fall eine GDI-Funktion verwenden....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (22. Oktober 2011 um 20:55)

  • Kleiner aber feiner Bugfix, neue version im Startpost.
    Danke an peethebee!

  • Hoffe das wird noch aktuell gehalten denn unter Windows7 64 Bit läuft es nicht einwandfrei.

    Grüße
    Tim

  • Soweit ich weiß wird x86 ASM eingesetzt.
    Daher kann das Skript nicht unter x64 laufen.
    Kompillier es als x86 und versuche ob es dann läuft.

  • Danke Mars!
    Hat Wunderbar geklappt..

    Jetzt bräuchte ich noch eine kleine Hilfe bzgl. einbinden in mein Script.
    Gibts da eine Anleitung? Hab ich das übersehen?

    Grüße
    Tim

  • Gibt es eine Download Alternative?

    Habe die kompilierte Version im Einsatz mit XP seit 2009, damals war die AutoIt-Version 3.3.6 aktuell...
    Seitdem wurden derart viele Script-breaking-Changes in AutoIt eingepatcht, dass mit der heute aktuellen Version 3.3.12 reihenweise Fehlermeldungen fliegen...
    Und da ich überzeugt bin, dass 98% der Anwendungen sowieso zum Games-Botten verwendet werden, sehe ich ehrlich gesagt keinen Bedarf einer "aktuellen" Version.
    Die 8-10 Stunden Arbeit, um zu einer lauffähigen Version von PushTheButton zu kommen, werde ich investieren, sobald auf meinem Konto die 1000€ (10 Std. a 100€/Ingenieurstunde ) eingegangen sind.


    mit imagesearch gescheitert.

    traurig genug, trotz der tausenden Threads zu diesem Thema in sämtlichen Botterforen die einfachsten Anwendungen nicht zum Laufen zu bekommen....
    EIN einfacher DllCall ist wirft eine riesige Flut von Problemen auf....so etwas nenne ich LÄCHERLICH!

  • Script-breaking-Changes in AutoIt eingepatcht

    Was bedeutet das genau?


    sehe ich ehrlich gesagt keinen Bedarf einer "aktuellen" Version

    magst Du Dein altes Script (trotz Fehler und ohne Überarbeitung) mal hochladen? Würde es mir gerne anschauen.

    PS: gibt es die alten Versionen wie die 3.3.6 zum Download? Dann kann man das mal mit der Autoit-Version ausprobieren.