Hey Leute, hab leider weder im Internet noch in der Datei imagesearch.au3 was zu Parameterliste von _imagesearcharea gefunden, daher nun meine Frage:
Fall 1:
Code:
#include <ImageSearch.au3>
$aFenster = WinGetPos ("Windows Media Player")
Local $result_x, $result_y
If _ImageSearchArea(@ScriptDir & "/Data/2.bmp", 0, $aFenster[0], $aFenster[1], $aFenster[0]+$aFenster[2], $aFenster[1]+$aFenster[3], $result_x, $result_y, 50) == 1 Then
MsgBox("", "Erfolg", "Erfolg")
EndIf
Fall 2:
Code:
#include <ImageSearch.au3>
$aFenster = WinGetPos ("Windows Media Player")
Local $result_x, $result_y
If _ImageSearchArea(@ScriptDir & "/Data/2.bmp", 0, $aFenster[0], $aFenster[1], $aFenster[2], $aFenster[3], $result_x, $result_y, 30) == 1 Then
MsgBox("", "Erfolg", "Erfolg")
EndIf
Mit welchem durchsuche ich nur das Fenster (Win Media Player)?
Gruß derrod
EDIT: Fall 1 ist richtig, der 5. und 6. Parameter sind die Koordinaten des Punkts rechts unten!!! der Grund dafür, dass beides nicht funktioniert, ist jener, dass WinGetPos bei Windows Media Player leider falsche Werte zurückgibt (keine Ahnung wieso).
hab leider weder im Internet noch in der Datei imagesearch.au3 was zu Parameterliste von _imagesearcharea gefunden
Code:
Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)
;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
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 $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
Quelle:
Zusatz:
Quote:
;================================================= ==============================
;
; 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
;
;================================================= ==============================
Da steht doch das die Syntax für beide ist. Abgesehen davon verwendet _ImageSearch _ImageSearchArea mit eigenen Parametern, aus denen man die Bedeutung, zumindest von diesen, auch ableiten kann.
Code:
; 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
Somit steht $x1,$y1 für die Startposition. $right,$bottom für die Desktop Auslösung. Der Rest steht oben in der Beschreibung.
Nein, $right und $bottom steht nicht für die Auflösung, sondern entweder für den unteren Eckpunkt oder die Breite und Höhe des Kastens in dem gesucht werden soll... und das ist meine Frage: Punkt oder Breite/Höhe
welche koordinaten hat denn die rechte untere Ecke des Bildschirms? Antwort: (desktopbreite; desktophöhe)
also kann es beides sein, die breite und höhe des kastens oder die koordinaten der rechten unteren ecke!
sorry, aber vielleicht wärs sinvoll wenn du dir nochmal genau meine Frage durchliest, weil du mir jetzt schon zum dritten mal Informationen lieferst, die ich schon kannte und die die Antwort offen lassen!
Speicher dir doch einfach per wingetpos die koords vom benötigten fenster und benütze diese um das area für ImageSearchArea zu erhalten. Dann ist es nämlich auch egal wo und wie groß das Fenster bei irgendwem ist.
Hmm tut mir leid hab bisher die Beiträge nur überflogen.
Keiner der beiden Codes kann funktionieren.
Quote:
;================================================= ==============================
;
; 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
;
;================================================= ==============================
danke, ich will aber garkeinen code, sondern nur die einfache info, wofür die parameter $right und $bottom stehen, ob für die breite und höhe des kastens oder für die koordinaten der unteren rechten ecke!
Stell dir vor du erstellst einen Bereich (Rechteck) mit 2 Punkten, der erste Punkt ist oben Links - x1, y1 und der zweite Punkt unten rechts - right, bottom
Steht aber auch in der ImageSearch.au3 bei den Infos.
ImageSearchArea 08/08/2013 - AutoIt - 7 Replies Alright im trying to search a certain area And cant seem to wrap my head around the code.
_ImageSearchArea("$vcl.bmp",$resultPosi tion,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)
The place im trying to search is:
- Top Left corner : 298,211
- Bottom Right corner: 507, 279