"Schnelle Variablenbefüllung" und eindeutige Zuordnung von Checkboxen gesucht

  • Ok, Java ist jetzt natürlich großer Mist...
    Dann hat sich mein Vorschlag natürlich erledigt! Ich habe auch schon ein Java Programm automatisiert, hatte aber die 'Push the Button' Udf verwendet. Mit der kam ich zu schnellen Ergebnissen!
    Leider bin ich nicht @Home, sonst könnte ich dir sicherlich besser Helfen...

    Grüsse!

    [EDIT]
    Versuche das mal so einzubauen:

    [autoit]

    do
    Sleep(100)
    Until _WaitForImageSearch("erfolgreichgespeichert.bmp", 5, 0, $k, $l, 0) = 1

    [/autoit]


    anstatt:

    [autoit]

    Sleep(50)
    $image = _imagesearch("erfolgreichgespeichert.bmp", 1, $k, $l, 0)
    If $image <> 1 Then
    Sleep(200)
    $image = _imagesearch("erfolgreichgespeichert.bmp", 1, $k, $l, 0)
    EndIf

    [/autoit]


    Musst du eben noch an deine Bedürfnisse anpassen. Sollte das dann noch immer nicht Funktionieren versuche das BMP im 24Bit Format zu speichern, ODER als PNG (weiß nicht ob die DLL das nimmt). Dann sollte es Funktionieren! Ach, und die DLL muß natürlich in @ScriptDir liegen und 'ImageSearchDLL.dll' heißen.

    Einmal editiert, zuletzt von Techmix (30. September 2014 um 11:05)

  • Hallo Techmix und Schnitzel,

    vielen Dank für die Tipps.

    das Skript ist jetzt deutlich besser geworden - nur diese blöde ImageSearch funktioniert leider immer noch nicht.

    Techmix:
    do_while Schleife habe ich eingebaut. Geniale Idee :)
    Ich verwende nur 24 Bit Bitmaps.

    Schnitzel:
    Den Befehl habe ich eingebaut - leider keine Verbesserung.
    Die ImageSearchDLL.dll liegt im gleichen Ordner wie das Skript.


    Deprimierend - ich bin mittlerweilen echt stolz auf mein Skript und wegen dieser Blöden Klasse funkt es einfach nicht - wieder die gleiche Ausgabemeldung von SciTe:

    Wahrscheinlich ist es ein total offensichtlicher Fehler, ich sehe ihn nur nicht.
    Die Klasse ImageSearch.au3 habe ich unter
    C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3
    abgelegt.

    Entsprechende Datei habe ich noch einmal in den Anhang gehängt - vielleicht findet ja jemand was...


    PS: Mir ist aufgefallen - Schnitzels Quellcode zur 32 Bit Variante ist Rot hinterlegt - hat das seine Richtigkeit?

    Edit:
    Habe nun einmal die 64 Bit Version probiert - jetzt sagt er in der ImageSearch:

    Und bricht dann ab.

  • Poste mal ein Teil deines Scriptes, zumindest die zusammengehörigen Zeilen welche eben die ImageSearch Funktion beinhaltet!
    Weil so ist es schwer zu helfen... Kann sein das du die Pfadangabe für das Such Pic evtl. falsch geschrieben Hast. Beispiel:

    [autoit]

    $Pfad = @Scriptdir & "test.bmp" ; ist falsch
    $Pfad = @Scriptdir & "\test.bmp" ; ist richtig

    [/autoit]


    Ist auch nur eine von vielen Vermutungen...

  • Ich habe jetzt wieder die 32 Bit Versionen genommen.
    Ich störe mich etwas an dieser Stelle im ImageSearch. (das hatte er aber bisher noch nicht bemängelt, bilde ich mir ein?)

    Hier ein Quellcodeausschnitt:


    Edit:
    Jetzt bin ich einen Schritt weiter, jetzt sucht er das Feld zumindest - aber findet es einfach nicht.
    Ich habe als zweites Argument eine "0" anstatt eine "5" übergeben. ALso das hier:

    Code
    $zaehler = 0
    		do
    			Sleep(100)
    			$zaehler = $zaehler + 1
    		Until (_WaitForImageSearch(@ScriptDir & "\erfolgreichgespeichert.bmp", 0, 0, $k, $l, 0) = 1) Or ($zaehler == 100)

    Allerdings läuft er jetzt immer in den Zähler rein. Er findet das Bild auch nach mehreren Versuchen einfach nicht... Obwohl das mit 100%iger Sicherheit passt.

    Edit2:
    Ich habe das mit 0 und 1 an der o.g. Stelle Versucht.
    Bei 0 findet er das Bild nicht. Bei 1 läuft er wieder in die o.g. Fehlermeldung rein.

    In diesem Thread kursiert die Angabe, dass man das auch per
    _WaitForImageSearch(@ScriptDir & "\erfolgreichgespeichert.bmp", 0, $k, $l, 0)
    aufrufen kann. Dann sagt er allerdings
    "called with wrong number of args", also fehlende Argumente.

    [ offen ] WaitForImageSearch "extern" aufrufen erfolglos

    2 Mal editiert, zuletzt von bratwurstdealer (30. September 2014 um 16:00)

  • Also bei mir funktioniert es mit der 64bit dll von hier: http://www.autoitscript.com/forum/topic/14…ge-explanation/
    Mit wenn ich auch das autoitscript als 64 bit laufen lasse:

    [autoit]

    #AutoIt3Wrapper_UseX64=y

    [/autoit]

    Ja die Rote Farbe ist schon ok. Das ist normal bei Compiler Optionen ;)

    die _WaitForImageSearch macht auch nichts anderes als einen Sleep im hintergrund und dann _imagesearch aufzurufen.
    So wie du es aus dem anderen Thread hast ist es meiner meinung nach bisschen sinnlos weil man dann den Sleep doppelt drin hat ^^
    _Waitforimagesearch probiert es schon so oft wie möglich innerhalb des Timers. Dann nochmal einen extra Timer mit Abbruchfunktion einzubauen ist bisschen umständlich :D
    Also entweder gleich die _WaitForImageSearch funktion mit dem Richtigen Timer verwenden oder _Imagesearch mit sleep selber basteln

  • Hallo nochmal,

    vielen Dank. Nach etwas rumprobieren hat es dann mit einer DLL funktioniert... Ihr hattet tatsächlich Recht.

    Nun habe ich schon wieder ein neues Problem. Ich habe AutoIT auf einem anderen Rechner installiert (64 Bit Version auf einem Win7 64Bit Enterprise). Und auch die 64 Bit DLL und ImageSearch Klasse genommen.
    Aber es funktioniert schonwieder einfach nicht. Egal was ich mache, sobald ich an den _WaitForImageSearch Part komme, bricht das Teil nach 8 Sekunden ab.
    Ich habe hier mal einen Screenshot, darauf sollte man alles sehen. Ist auch der Quellcode drauf.
    1.txt ist einfach eine leere TextDatei und die bitmap nach der gesucht wird ist einfach nur ein Stückchen des Schließen Kreuzes, eben ausgeschnitten und in eine bmp verwandelt.

    Vielen Dank schonmal

    mfg
    der Dealer

  • Hy,
    Auf die Schnelle fallen mir zwei spontane Dinge ein:
    1.) Die DLL... Bist du sicher das diese auch lauffähig ist?
    2.) Versuche mal einen Ordner ohne Leerzeichen!
    Und hast du schon die x86 Version probiert, läuft der Source damit? Bei ImageSearch wirst du keinen großen Vorteil von 64Bit haben...

    Grüße!

  • Hi,

    Ich habe die DLL von hier:
    http://www.autoitscript.com/forum/topic/14…ge-explanation/

    Ich habe AutoIT nun mal deinstalliert und in der X86 Version neu installiert.
    Dazu die DLL und die ImageSearch Klasse von obigem Link - auch in 32 Bit.

    Gleicher Fehler, Skript bricht nach paar Sekunden ab.

    Das komische: Mit der gleichen DLL funktioniert es auf meinem anderen Rechner? (gleiches OS usw...)

    Ich habe die Pfade angepasst, meine bitmap liegt jetzt in einem Verzeichnis ohne Leerzeichen. - Gleicher Fehler...

  • Hei, es funktioniert. Tag gerettet :) Vielen Dank.


    Fazit:
    Die DLL's von der Seite die ich gepostet hab, sind nicht gut. Ich frag mich nur, warum dass dann bei meinem anderen PC funktioniert?
    Naja, ich muss nicht alles verstehen...

  • sehr gerne, schön wenn ich helfen konnt...

    das wär mal intressant zu wissen! also bei mir wars immer so das bei den alten versionen von autoit das alte imagesearch funktionierte ohne probs, erst ab einer bestimmten version (k.a. welche genau) gings dann nich mehr. vielleicht lässt sich ja jemand finden der ausknobbeln kann warum das alte nich mehr mit neuen autoit´s funkt...

    noob aus erfahrung

  • Und bei mir war mal ein Rechner, der konnte Daten NUR vom DVD-Laufwerk kopieren - Da ging nichtmals mehr das Kopieren vom USB-Stick oder runterladen aus dem Netz! Alle Dateien wurden Fehlerhaft auf einer !Lauffähigen Festplatte abgelegt...

    Grüße!