Hilfe bei ImageSearch

07/16/2014 19:45 Moneypulation#1
Hallo ich brauche Hilfe bei der ImageSearch funktion. Unzwar bekomm ich immer diese Fehlermeldung wenn ich eine Funktion starte die den ImageSearch beinhaltet:

[Only registered and activated users can see links. Click Here To Register...]

Davor hatte ich keine PixelSearch.au3 Datei. hab sie vom internet gedownloadet und auch die .dll datei dafür. Trotzdem scheint was mit der Datei nicht zu stimmen...

Also beim StartUp läuft noch alles gut, auch das beenden geht. Aber wenn ich g drücke und somit die Funktion _Start , dann kommt der error

Hoffe auf eine gute Antwort


lg
07/16/2014 22:10 KDeluxe#2
In der Meldung steht doch alles was du wissen musst: Der Fehler tritt in Zeile 45 der ImageSearch.au3 auf. Da wirst du wohl eine fehlerhafte Version gedownloadet haben.
Ändere die Zeile in
Code:
If IsArray($result) And $result[0] = 0 Then Return 0
oder suche dir eine korrekte .au3. Ich kann nicht genau sagen, wie sich die Änderung der Zeile auswirken wird. Sollte das Array noch einmal verwendet werden musst du vorher prüfen, ob $result überhaupt ein Array ist. Umschließe den Block einfach mit der IsArray() Abfrage.
07/16/2014 22:24 Moneypulation#3
Quote:
Originally Posted by KDeluxe View Post
In der Meldung steht doch alles was du wissen musst: Der Fehler tritt in Zeile 45 der ImageSearch.au3 auf. Da wirst du wohl eine fehlerhafte Version gedownloadet haben.
Ändere die Zeile in
Code:
If IsArray($result) And $result[0] = 0 Then Return 0
oder suche dir eine korrekte .au3. Ich kann nicht genau sagen, wie sich die Änderung der Zeile auswirken wird. Sollte das Array noch einmal verwendet werden musst du vorher prüfen, ob $result überhaupt ein Array ist. Umschließe den Block einfach mit der IsArray() Abfrage.
Ich kenn mich leider noch nicht so gut aus mit AutoIt. Wenn ich die Zeile mit deiner Zeile überschreibe kommt direkt der nächste Error in Z. 48

Das ist meine Imagesearch.au3 datei:


Kann jemand hier seine funktionierende Datei hochladen? Wäre nett
07/16/2014 23:27 KDeluxe#4
Code:
Func _ImageSearchArea($findImage, $resultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance, $transparency = 0)
        ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
        If Not ($transparency = 0) Then $findImage = "*" & $transparency & " " & $findImage
        If $tolerance > 0 Then $findImage = "*" & $tolerance & " " & $findImage
        $result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)

        ; If error exit
        If IsArray($result) Then
            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
        Else
            Return 0
        EndIf
EndFunc   ;==>_ImageSearchArea
07/17/2014 17:44 Moneypulation#5
Quote:
Originally Posted by KDeluxe View Post
Code:
Func _ImageSearchArea($findImage, $resultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance, $transparency = 0)
        ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
        If Not ($transparency = 0) Then $findImage = "*" & $transparency & " " & $findImage
        If $tolerance > 0 Then $findImage = "*" & $tolerance & " " & $findImage
        $result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)

        ; If error exit
        If IsArray($result) Then
            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
        Else
            Return 0
        EndIf
EndFunc   ;==>_ImageSearchArea

Danke, du bist hier der einzige der mir hilft :/

Der Code beinhaltet nur die Imagesearcharea funktion. Aber mit @Desktopwidh und height kann ich doch eigentlich die funktion auch desktopübergreifend benutzen oder nicht? Habs mal probiert, bekomme keine fehlermeldung aber das bild wird nicht erkannt :( Egal ob .bmp mit 16 oder 254 farben oder ob .png ...

Weiß jemand warum?

07/17/2014 19:25 alpines#6
Nimmst du Coord oder Absolut als Koordinaten Mode, liegt eventuell daran.
Außerdem sollten die Bilder die du suchst am besten mit Lossless PNG komprimiert werden.
07/18/2014 01:17 Moneypulation#7
Ich habs mal mit beiden probiert und es passiert immer noch nichts. Hab auch die bilder komprimiert, bot erkennt die bilder wieder nicht

Hier ist mal ein Beispielbild dass erkennt werden soll:

[Only registered and activated users can see links. Click Here To Register...]