ImageSearch funktioniert nicht.

  • Damit man nicht lange lesen muss....! Lösung in meinem Fall:
    [ gelöst ] ImageSearch funktioniert nicht.

    Die von mir verwendeten Dateien hab ich auch mal als Anhang hochgeladen.
    Thema "ImageSearch funktioniert nicht" somit "gelöst".

    Halli hallo!

    Bin gerade halb am verzweifeln. Wollte mal ein wenig mit ImageSearch basteln.
    Habe mein Script auf ein Minimum gekürzt jetzt und da geht trotzdem nix!

    Hier mein Script:

    [autoit]

    #include <ImageSearch.au3>

    [/autoit][autoit][/autoit][autoit]

    $x1 = 0
    $y1 = 0

    [/autoit][autoit][/autoit][autoit]

    $res = _ImageSearch("Search.bmp", 1, $x1, $y1, 10)

    [/autoit][autoit][/autoit][autoit]

    If $res = 1 Then
    MouseClick("left", $x1, $y1, 10)
    sleep(500)
    Else
    MsgBox(64, "Status:" "Es konnte keine Übereinstimmung ermittelt werden!")
    EndIf

    [/autoit]

    C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3 (44) : ==> Subscript used with non-Array variable.:
    if $result[0]="0" then return 0
    if $result^ ERROR
    >Exit code: 1 Time: 0.213

    Davon ab habe ich die Datei "ImageSearch.au3" im Includeverzeichnis. Die Datei "ImageSearch.dll" ist sowohl im Verzeichnis "Windows", als auch unter "Programme (x86)"...denk mal letzteres ist korrekt bei Win7, wenn ich mir die Fehlermeldung anschaue?
    Hatte es vorher in einer Func, aber das hat auch nicht funktioniert und habe auch die Dateien 2 mal runter geladen und beide (also gesammt 4 Dateien) versucht..dachte mir vllt ist ja eine beschädigt oder veraltet...wie auch immer....! Habs auch bereits mit "Global $x1 = 0" und "Global $y1 = 0" versucht. Habe es mit *npng, als auch *.bmp versucht gehabt. Allerdings vermute ich auf Grund der Fehlermeldung eher einen anderen Fehler....nur das ich nicht den geringsten Schimmer habe, wo ich da ansetzen sollte!

    Kann mir jemand einen Fehler sagen? Falls nein - kann mir wer sagen, wo ich diese beiden Dateien funktionstüchtig runterladen kann (aktuell) ?
    Bin gerade absolut ratlos und prockel nu schon ne gefühlte Ewigkeit daran herum...ohne den geringsten Erfolg. :(

    edit: Inhalt meiner ImageSearch.au3:

    Spoiler anzeigen
    [autoit]

    #include-once
    ; ------------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.0
    ; Language: English
    ; Description: Functions that assist with Image Search
    ; Require that the ImageSearchDLL.dll be loadable
    ;
    ; ------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Find the position of an image on the desktop
    ; Syntax: _ImageSearchArea, _ImageSearch
    ; Parameter(s):
    ; $findImage - the image to locate on the desktop
    ; $tolerance - 0 for no tolerance (0-255). Needed when colors of
    ; image differ from desktop. e.g GIF
    ; $resultPosition - Set where the returned x,y location of the image is.
    ; 1 for centre of image, 0 for top left of image
    ; $x $y - Return the x and y location of the image
    ;
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ;
    ; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
    ; a desktop region to search
    ;
    ;===============================================================================
    Func _ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance, $HBMP=0)
    return _ImageSearchArea($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance,$HBMP)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance,$HBMP=0)
    ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
    if $tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage
    If IsString($findImage) Then
    $result = DllCall("C:\ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage,"ptr",$HBMP)
    Else
    $result = DllCall("C:\ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"ptr",$findImage,"ptr",$HBMP)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; If error exit
    if $result[0]="0" then return 0

    ; Otherwise get the x,y location of the match and the size of the image to
    ; compute the centre of search
    $array = StringSplit($result[0],"|")

    $x=Int(Number($array[2]))
    $y=Int(Number($array[3]))
    if $resultPosition=1 then
    $x=$x + Int(Number($array[4])/2)
    $y=$y + Int(Number($array[5])/2)
    endif
    return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Wait for a specified number of seconds for an image to appear
    ;
    ; Syntax: _WaitForImageSearch, _WaitForImagesSearch
    ; Parameter(s):
    ; $waitSecs - seconds to try and find the image
    ; $findImage - the image to locate on the desktop
    ; $tolerance - 0 for no tolerance (0-255). Needed when colors of
    ; image differ from desktop. e.g GIF
    ; $resultPosition - Set where the returned x,y location of the image is.
    ; 1 for centre of image, 0 for top left of image
    ; $x $y - Return the x and y location of the image
    ;
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ;
    ;
    ;===============================================================================
    Func _WaitForImageSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance,$HBMP=0)
    ;$waitSecs = $waitSecs * 1000
    ;$startTime=TimerInit()
    While TimerDiff($startTime) < $waitSecs
    sleep(100)
    $result=_ImageSearch($findImage,$resultPosition,$x, $y,$tolerance,$HBMP)
    if $result > 0 Then
    return 1
    EndIf
    WEnd
    return 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Description: Wait for a specified number of seconds for any of a set of
    ; images to appear
    ;
    ; Syntax: _WaitForImagesSearch
    ; Parameter(s):
    ; $waitSecs - seconds to try and find the image
    ; $findImage - the ARRAY of images to locate on the desktop
    ; - ARRAY[0] is set to the number of images to loop through
    ; ARRAY[1] is the first image
    ; $tolerance - 0 for no tolerance (0-255). Needed when colors of
    ; image differ from desktop. e.g GIF
    ; $resultPosition - Set where the returned x,y location of the image is.
    ; 1 for centre of image, 0 for top left of image
    ; $x $y - Return the x and y location of the image
    ;
    ; Return Value(s): On Success - Returns the index of the successful find
    ; On Failure - Returns 0
    ;
    ;
    ;===============================================================================
    Func _WaitForImagesSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance,$HBMP=0)
    $waitSecs = $waitSecs * 1000
    $startTime=TimerInit()
    While TimerDiff($startTime) < $waitSecs
    for $i = 1 to $findImage[0]
    sleep(100)
    $result=_ImageSearch($findImage[$i],$resultPosition,$x, $y,$tolerance,$HBMP)
    if $result > 0 Then
    return $i
    EndIf
    Next
    WEnd
    return 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • ImageSearchDLL.dll ist korrekt und die ist im Verzeichnis "C:\Windows\SysWOW64".
    Das mit dem Rechtsklick hab ich auch schon alles versucht. Auch als Administrator. Klappt nix davon!

    Am Script selber ist alles ok denk ich mal oder? Dachte erst super hammer klasse endlich die Erlösung. Ich hatte die Datei nämlich wie gesagt sowohl im Verzeichnis "C:\Windows", als auch unter "C:\Program Files (x86)" gespeichert. Nicht unter "C:\Windows\SysWOW64"!

    Rechtsklick aufs Script -> Run Script (x86)
    Spuckt jetzt dauernd das aus...
    "MyImageSearch.exe funktioniert nicht mehr."

    Bild (siehe Anhang).

    Habe auch einen Neustart durchgeführt. Das selbe in grün wieder!
    Bei Rechtsklick aufs Script -> Run Script (x64) kommt folgendes:

    Line 44 (File "C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3"):
    if $result[0]=0 then return 0
    if $result^ ERROR

    Error: Subscript used with non-Array variable.


    Ich verstehe es beim besten Willen nicht. Probiere schon Stundenlang hier herum. Vermutlich muss ich einfach mal Pause machen..ka... :D
    Sehe schon den Wald vor lauter Bäumen nicht mehr! ?(

  • Packe mal die ImageSearchDLL.dll ins das gleiche Verzeichnis wie die ImageSearch.au3.
    Dann sollte es klappen, zumindest geht es bei mir einwandfrei. (Win 7 x64)

    Edit: Ach nein, packe sie mal in den Ordner, wo deine .au3-Datei liegt (@ScriptDir).

    MfG Xenon :)

  • Wenn ich sie im Scriptordner habe (bei mir ist das gerade einfach plump der Desktop kommt "AutoIt v3 Script funktioniert nicht mehr...Programm schließen..."

    Lege ich sie statt dessen in das Verzeichnis der .au3 bekomme ich folgene Meldung:

    >"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Gosu\Desktop\MyImageSearch.au3"
    C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3 (44) : ==> Subscript used with non-Array variable.:
    if $result[0]="0" then return 0
    if $result^ ERROR
    >Exit code: 1 Time: 0.215

    Bei dem Thema vergeht mir schon fast langsam der Spass. Hab nu schon mehr als nen Tag daran herumgebastelt in der Hoffnung wenigstens mal den kleinsten Erfolg zu haben, aber der Misst will einfach nicht laufen und da das Ganze nicht einmal etwas mit meinen eigentlichen Scripten zu tun hat wie ich das sehe, könnte ich ne Kriese bekommen.


    Falls es noch iwen gibt der glaubt er hat ne Lösung bitte her damit. Bin schon am resignieren!!!

    edit: Und kann mir iwer bei dem es offensichtlich geht nen Link zu den beiden Dateien geben wo er sie herunter geladen hat. Wäre nett.

  • Sry alpines, aber die Antwort war ja mal "sehr aufschlussreich".

    Zum einen sollte man denke ich nicht immer gleich aufgeben, wenn etwas nicht funktioniert...nur so meine Meinung und zum anderen sollte man eigentlich erwarten, das wenn jemand einem rät andere Wege zu beschreiten, die einen ebenso gut zum Ziel führen könnten, die selben dann auch mal zu nennen. Abgesehen davon gibt es immer andere Wege...das hätte ich mir auch schon vor dem Beitrag denken können. :P

    Und vor allem gibt es auch andere wege als AutoIt. Da ich aber hier nun mal im AutoIt-Forum bin und nach Hilfe für eben genau dieses Thema suche finde ich deine Antwort alles andere als ausreichend. Wie nebenbeibemerkt auch die anderen Posts da sie nicht im geringsten Lösungsansätze enthalten. Der 1. Post ist mehr oder weniger eine Frage. Der 2. Post widerholt ca. das was Xenon einen Post vorher geschrieben hatte und dein 3. Post sagt mir dann quasi "lass das Thema links liegen is eh eher supobtimal".

    Wie wäre es mal abwechselungsweise mit einem Post, der als Hilfestellung zu betrachten ist? Mein ich nicht böse, aber ich suche hier nach einer Lösung!

  • Zum einen sollte man denke ich nicht immer gleich aufgeben, wenn etwas nicht funktioniert...nur so meine Meinung und zum anderen sollte man eigentlich erwarten, das wenn jemand einem rät andere Wege zu beschreiten, die einen ebenso gut zum Ziel führen könnten, die selben dann auch mal zu nennen. Abgesehen davon gibt es immer andere Wege...das hätte ich mir auch schon vor dem Beitrag denken können. :P

    Zum einen erwartest du scheinbar von uns, dass wir uns mit deinem Problem beschäftigen, die Frage ist also wer hier "immer gleich aufgibt". Warum sollten wir uns mit etwas beschäftigen, dass folgende Punkte erfüllt:

    1. Unzuverlässig
    2. Ineffektiv
    3. Ganz offensichtlich ist die von dir genutzte UDF fehlerhaft bzw. macht kein gescheites Error Handling (der Absturz passiert innerhalb der UDF Funktion, außer du hast Code unterschlagen)
    4. Du postest noch nicht einmal den Link zur UDF. Sollen wir die selbst suchen? Woher sollen wir wissen ob du die aktuellste Version verwendest wenn wir nicht einmal wissen wo du diese her hast?

    Alleine Punkt 1 und 2 sprechen für Alternative Wege, Punkt 3 spricht ebenfalls gegen die Nutzung. Punkt 4 ist dein Verschulden und erschwert die Fehlersuche.

    Nun zu deinem Vorwurf, dass wir die Alternativen nennen sollten, wenn es denn welche gibt. Hier bleibt anzumerken, dass man nur dann konkrete Alternativen nennen kann wenn man die Aufgabe kennt. Auch hier bist du uns eine Antwort schuldig, denn ich sehe nirgendwo auch nur einen Satz von dir in dem du dein vorhaben bzw. das Ziel des Vorhabens beschreibst.

    Also vielleicht erstmal den Fehler am eigenen Verhalten suchen bevor du anderen den Vorwurf machst nicht besonders hilfreich zu sein.


    Und vor allem gibt es auch andere wege als AutoIt.

    Dann hast du ja eigentlich kein Problem? Davon ab ist die Nutzung einer DLL (was diese UDF ja tut) ohnehin kein Einsatz von nativem Autoit. Du könntest die DLL auch in vielen anderen Sprachen ansprechen.


    Wie wäre es mal abwechselungsweise mit einem Post, der als Hilfestellung zu betrachten ist? Mein ich nicht böse, aber ich suche hier nach einer Lösung!

    Meine ich auch nicht böse, aber wie oben erwähnt ist der erste Schritt zu brauchbarer Hilfe eine brauchbare Fragestellung und das Bereitstellen aller relevanten Ziele / Informationen / Links.

    Einmal editiert, zuletzt von misterspeed (1. Januar 2014 um 12:20)

  • Dann frage ich mich was das für Dinge sein sollen und vor allem warum du dann überhaupt hier postest?!

    Ich bin hier im Forum für Hilfe & Unterstützung! Und das sicherlich nicht damit mir iwer sagt er kennt eine Lösung, aber darf/will sie mir nicht verraten.
    Sorry aber sind wir hier im Kindergarten?

  • misterspeed eig solltest du denk ich meine Reaktion mehr als gut genug verstehen.
    Ist wohl kaum zweckdienlich zu spammen was bringt mir sein
    1. Post? NICHTS
    2. Post? NICHTS (hatte Xenon bereits geschrieben)
    3. Post? NICHTS
    ...

    Punkt1 von dir mag stimmen - Wenn er es für so unsinnig hält muss er mir ja keine Hilfestellung geben - besser als Spam!
    Für Punkt 2 gilt das Selbe.
    Punkt 3 kann zutreffen das wissen wir wohl momentan alle nicht, aber auch da hast du vermutlich Recht.
    Der 4. Punkt und auch da hast du recht ist definitiv MEIN VERSCHULDEN!

    Wenn man meine Posts anschaut nehme ich mir wohl wenigstns Zeit dafür (viele sind es bis jetzt ja nicht).

    ABER!!! Rechtfertigt das Spam? Man hätte mich auch darauf hinweisen können.
    Ich denke nicht das mein Post den anschein macht, als hätte ich das in 3 sec eben reingeklatscht. Es war nicht nen RIESEN Aufwand, aber ich habe das Bild zusammen geschnitten mit der Fehlermeldung, und vor allem auch alles so gut wie es für MICH möglich war und was mir eingefallen ist hier zu posten. Wenn dann als Antwort kommt..."Andere Wege als AutoIt gibts immer aber AutoIt bietet sich hier super an. Ich würde ImageSearch nicht verwenden sondern andere Sachen, aber die würden hier leider gegen die Forenregeln verstoßen. " ist das in meinen Augen extrem dürftig. Genauso wie das widerholte posten (was Xeonon ohnehin schon gepostet hatte). Vor allem, wenn jemand vorgibt bessere Wege zu kennen (was er mir als Neueinsteiger offensichtlich auch recht deutlich klar machen will) muss ich mir die Frage stellen was das Ziel dabei ist. Bevor Spam kommt kann man das Posten auch gleich lassen. Wären Fragen oder aber Kritik gekommen hätte ich vollkommen anders reagiert. Das ist für mich ein riesen grosser Unterschied. Oder aber Beispiele für ne Alternative, sofern du Punkt 1-3 nimmst.

    Mich für einen fehlenden Link mit so Antworten abzuspeisen finde ich mal richtig...!

    Punkt 4 ist mein Fehler...da hast du Recht. Allerdings ist das wie gesagt in meinen Augen kein Grund nahezu gezielt hier Dinge zu posten die entweder nahe zu nichts ausagend sind oder aber meine Kenntnisse bei weitem übersteigen. Hätte ich ansatzweise Ahnung von dem was alpines in seinem letzten Post geschrieben hat z.B. würde ich wohl kaum Fragen, wie ich das Problem um das es hier eig in dem Thread gehen sollte bewältigen kann. Hab mir gerade auch schon andere Beiträge angeschaut.....(2-Zeiler und 5-Zeiler)...! Die 2 Punkte von AspirinJunkie solltest du vllt doch mal überdenken.
    Ich habe reingarnichts davon das ich nu weiss das du der aller aller Beste bist und mir nicht helfen möchtest. Würde mich nichtmal stören...nur dann unterlasse bitte Spam danke.
    Und eig bin ich nicht der Typ der streit oder Auseinandersetzungen sucht. Bringt mir nämlich herzlich wenig. Vermutlich sogar eher das Gegenteil von dem, was mir nützlich wäre.
    Aber habe auch andere Posts von alpines mal angeschaut. Wobei ich da sagen muss, dass da, wenn auch erst auf Anfrage tatsächlich konkrete Beispiele kamen.
    Wenn man jemandem der neu hier ist sagt "mit Disassembler ran und paar Adressen sowie Pointer + Offsets rausfinden" ist das das selbe, als wenn ich meiner Tante die nichtmal weiss wie man einen Computer einschaltet sage "Hey installiere am besten mal dein Betriebssystem eben neu!". Kann da nur sagen ich stimme den 2 Punkten von AspirinJunkie voll und ganz zu! Selbst, wenn rein technisch betrachtet deine Version die schnellere WÄRE (das sei nun einfach mal dahin gestellt).

    Und auf was ich bestehe kann ich dir sagen alpines.

    Das man sich entweder dazu entschliesst jemandem zu helfen. Das Bedeutet für mich wenigstens versuchen, und wenn es nur ein hinweisen auf einen Fehler im Post ist reicht das schon aus...wie zb ein fehlender Link, Hilfestellung zu geben oder aber einen Thread so doof zu finden, das man nicht helfen will. Dann auch einfach nix schreiben.

    Hätte ich nen Thread gestartet wo schon im Topic steht "Brauche Hilfe" und das wo ich im Hilfsforum wäre ok....aber 1 Link fehlt das ist alles. Ist meines Erachtens nach echt mal ne Nummer zu hart.

    5 Mal editiert, zuletzt von Chulio (1. Januar 2014 um 15:10)

  • Du hast leider trotz deines ewig langen Postings nichts zur eigentlichen Frage beigetragen. Was soll überhaupt automatisiert werden? Ohne diese Rückmeldung deinerseits kann man dir auch keine Alternativen vorschlagen.

    Nun zum fehlerhaften Error Handling in der imagesearch.au3:

    Ersetze diesen Code ab Zeile 43 in der imagesearch.au3

    [autoit]


    ; If error exit
    if $result[0]="0" then return 0

    [/autoit]


    mit diesem Code

    [autoit]


    ; If error exit
    If @error <> 0 Then
    ConsoleWrite("Fehler bei DLL Call in Imagesearch.au3 --> Errorcode: " & @error & @CRLF)
    Return 0
    Else
    if $result[0]="0" then return 0
    EndIf

    [/autoit]

    Anschließende Vergleiche den Fehlerrückgabewert in der Scite console mit denen die in der Hilfe zur Funktion

    [autoit]

    dllcall()

    [/autoit]

    aufgelistet werden:

    Code
    Rückgabewert
    Erfolg: 	@error = 0.
    Fehler: 	setzt @error
    @error: 1 Die Dll-Datei kann nicht verwendet werden,
    	2 unbekannter Rückgabewert "return type",
    	3 Funktion "function" wurde in der DLL-Datei nicht gefunden.
    	4 Falsche Anzahl von Parametern.
    	5 Falscher Parameter.
    siehe Bemerkungen.

    Anhand des genauen Fehlers kannst du vielleicht auch herausfinden warum die imagesearch.au3 bei dir scheitert.


    EDIT:

    Ein Blick auf den DLL Call der da scheitert sollte btw auch erklären warum er scheitert:


    [autoit]

    $result = DllCall("C:\ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"ptr",$findImage,"ptr",$HBMP)

    [/autoit]

    Na fällt jemandem was auf? Die DLL muss direkt auf C:\ liegen. Ein weiteres Zeichen für die unglaublich schlechte Programmierfähigkeit des Autors der UDF. Der DLL Pfad sollte nie hardcodet vorliegen, sondern per Variablenübergabe an die Funktion realisiert werden, oder wenn schon hardcodet dann zumindestens das @scriptdir.

  • Hi,
    wieder einmal wird bestätigt, dass auch für einfachste Botterei ein Minimalskill erforderlich ist...
    Seltsam, dass die ImageSearch() bei tausenden Bottern einwandfrei funktioniert, aber in diesem Fall nicht?!

    Wieso ich auf Botten komme? :rofl:
    Siehe die bisherigen Threads des TE seit seiner Anmeldung...

    alpines,
    hier im Forum existieren seit Jahren mehrere Scripte, welche die Funktionen des "Bildersuchens" (was nichts anderes ist als eine Pixelsuche) in nativem AutoItcode bei Suche auf dem gesamten Screen in einigen ms vollführt.
    Das Programm hilft sogar beim Erstellen der Suchbilder, welche sogar animiert sein können...also bewegt, s. bspw. den oben von mir verwendeten Smilie.
    Fensterinhalte werden bei der Suche automatisch gescrollt, und es wird auf das zu suchende Bild geklickt, viel einfacher geht es nicht mehr...

    Da wird weder mit einem Disassembler rumgespielt, noch ist gewaltiger Code erforderlich.

  • Jaja...! Wie konnte ich diese Passage nur unterschlagen?! Der Grund warum ich keine exakte Angabe von vorherein gemacht hatte ist, das ich wie aber auch im ersten Post bereits steht ich eigentlich die Funktion nutzen können möchte. Ich bin erst seid extrem kurzer Zeit dabei und habe vermutlich aus deiner Perspektive nahe zu keine Kenntnisse.

    Warum genau ich ImagSearch gerne benutzen würde im allgemeinen? Weil die anderen Möglichkeiten (das mit dem RAM) vermutlich weit komplizierter ist als das mit ImageSearch. Ich denke ich sollte mich erstmal an "Anfängerkram" halten, als direkt iwas zu nutzen, wo nur iwelche Guru's was von verstehen die einfach schon nen paar Jahre dabei sind. Das was du gesagt hast kann ich zwar lesen, aber verstehen tue ich da nichts von. Wenn du es ganz genau wissen willst....ich wusste zunächst nicht einmal was....ja kannst mal laut lachen....eine UDF ist!!! Hatte nach deinem ersten Post direkt bei wiki geschaut...kannst nochmal lachen...

    Spoiler anzeigen

    Die Abkürzung UDF steht für:
    [*]Universal Disk Format, ein plattformunabhängiges Dateisystem
    [*]User Defined Function, eine benutzerdefinierte Funktion
    [*]Uniqueness Database File, eine Textdatei für unbeaufsichtigte Software-Installationen
    [*]UHF Direction Finder, ein Funk-Peil-Verfahren, um ein QDM zu ermitteln
    [*]Unducted Fan, eine Triebwerksform in Flugzeugen
    [*]Union Defence Force, eine ehemalige Armee der Südafrikanischen Union
    [*]Ulster Defence Force in Irland
    [*]Union démocratique fédérale, franz. für Eidgenössisch-Demokratische Union, eine politische Partei in der Schweiz
    [*]Union pour la démocratie française, ein politisches Parteienbündnis in Frankreich
    [*]United Democratic Front (Indien)
    [*]United Democratic Front (Malawi)
    [*]United Democratic Front (Namibia)
    [*]United Democratic Front (Südafrika)
    [*]United Front for Democratic Change, eine Rebellengruppe im Tschad
    [*]Unerkannt durch Freundesland, illegale Abenteuerreisen


    Hatte dann zwar die Lösung (und musste sogar mal selber lachen, was mir eig bis dahin vergangen war...vllt doch lieber in die Politik wandern als zu programmieren? :D), aber bin nicht weiter darauf eingegangen und hab da nicht geschaut, da ich wohl richtig in der Annahme war, dass das Ganze ne Nummer zu hoch für mich wäre. Habs Grob überflogen und den Pfad habe ich selber geschrieben bei $result = DllCall("C:\ImageSearchDLL.dll"," Hatte das iwo als Tip gefunden...aber da ich wie gesagt kein "Peil" hab, dachte ich mir vom Rest lass lieber die Finger weg. Wenn man halt keine Ahnung hat...macht man am Ende nur mehr kaputt als ganz!

    Was du geschrieben hast werde ich gleich direkt mit grösster Freude versuchen umzusetzen.
    Werde mich dann später nochmal melden.

  • Wenn es mir lediglich um nen Bot gehen würde, dürfte die Alternative die ich mir bereits gebastelt habe wohl Grund genug sein, warum ich mich eig net mehr für eine Lösung hier interessieren würde...also muss da wohl doch interesse an der Sache an sich bestehen.

    Das Script hab ich mal gebastelt und das funktioniert super eig.

    Spoiler anzeigen
    [autoit]

    Hotkeyset("{Enter}","_Start")
    Hotkeyset("{ESC}","_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    ;PixelSearch ( left, top, right, bottom, color [, shade-variation] [, step]])

    [/autoit] [autoit][/autoit] [autoit]

    $Width = @DesktopWidth
    $Height = @DesktopHeight

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(250)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Start()
    MsgBox(0, "Info:", "Die Startfunktion wurde ausgelöst!")
    While 1
    ;1260, 517 0xFFE300 (gelb vom rand)
    $ps1 = PixelSearch(0,0,@DesktopWidth,@DesktopHeight,0xFFE300)
    If isArray($ps1) Then
    $ps1[0] = $ps1[0] - 66
    $ps1[1] = $ps1[1] + 17
    ;MsgBox(0, "Info-ps1:", "Coords für knatschgrün solltn folgendee sein:" & @CRLF & "Width= " & $ps1[0] & "Height= " & $ps1[1])
    ;1194, 534 0x41B73A (knatschgrün)
    $ps2 = PixelSearch($ps1[0],$ps1[1],$ps1[0],$ps1[1],0x41B73A)
    If isArray($ps2) Then
    $ps2[0] = $ps2[0] + 34
    $ps2[1] = $ps2[1] - 19
    MsgBox(0, "Info-ps2:", "Coords für den weissen Bereich im Ausrufezeichen solltn folgende sein:" & @CRLF & "Width= " & $ps2[0] & "Height= " & $ps2[1])
    ;1228, 515 0xFFFFE2 (weisser Bereich im Ausrufezeichen)
    $ps3 = PixelSearch($ps1[0],$ps1[1],$ps1[0],$ps1[1],0x41B73A)
    If IsArray($ps3) Then
    MouseClick("left", $ps2[0], $ps2[1], 1)
    EndIf
    EndIf
    Else
    MsgBox(0, "Fehler:", "Es wurde nur keine Übereinstimmung gefunden!" & @CRLF & "Suche nach Pixel2 und Pixel3 wurde deshalb nicht gestartet!")
    EndIf
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    So überprüfe ich halt 3 Pixel. Treffer gibt es nur, wenn er echt dieses Suchmuster findet. Man könnte noch weitere Pixel suchen. Aber denke, dass das wohl relativ klar zeigt das ich, sofern nicht wirklich das Interesse an der Sache an sich im Vordergrund stehen würde, diese Methode, soweit ich das in kurzen Augenblicken durch mein Spatzenhirn jagen kann sogar besser für einen Bot sein dürfte.

    Hätte nu aber immer noch gerne ne Lösung für ImageSearch. Und vor allem wenn du Schon auf mein RegDatum schaust, dann solltest du vllt auch andere Posts durchschauen.
    z.B. dieser hier (so viele hab ich ja nicht)...
    http://www.autoit.de/index.php?page=Thread&threadID=44425

    Das Interesse einen Bot erstellen zu können wäre sogar da, wo du es ansprichst. Allrdings brauchen tu ich keinen ;) Höchstens einen der...hmm...für mich putzt und aufräumt...wäre n1! :D
    Und bzw Passt die Bildergallerie z.B. die ich da programmiert habe eher weniger zum Thema Bot's. Auch wenn die in gewisser Weise einer ist. :rofl:
    Die macht für mich die Drecksarbeit und liest mir schön die Verzeichnisse durch, sodass ich nur Bilder bzw. Ordner hochladen brauch und er erkennt das automatisch usw.!

    Und ja ist für euch sicher Kindergartenkacke, aber es gibt halt auch Leute die sich mit einfachen Dingen benügen können!

    edit: ich frage mich was für Methoden du meinst. Du machst ne Geheimniskrämerei draus..lol. Meinste das mit dem RAM oder was? Warum ist das verboten? Macht das den Computer kaputt oder so?

    edit2: Und DU bist schuld das ich gerade wieder Ideen bekomme. Wo ich so Bildergallerie sage, könnte man meine Version ja auch noch so abändern, das sie mir anstatt nen eindeutiges Ergebnis besser noch nen eindeutiges Suchmuster ausliesst oder? :D Nenene wieder ne Idee, Aber muss mich nun erstmal an die Sache von alpines wagen. Somit erstmal raus hier ne Weile - werde das denke ich wieder nicht hinbekommen warum auch immer...zuviel schlechter Vorgeschmack, aber ohne Versuch werd ich ja doch nicht schlauer! ;)

    4 Mal editiert, zuletzt von Chulio (1. Januar 2014 um 16:50)