Forum | | | | - page 1 - |
|  Christian Schneider | Salut,
je stehe malheureusement la fois wieder sur Kriegsfuß avec einer .dll. Diesmal ist es qui AutoItX3.dll. je voudrais qui Funktion AU3_PixelSearch appel. KompilierenMarqueSéparation comment devrait maintenant qui entsprechende Aufruf air? qui Doku sagt:
AU3_API void WINAPI AU3_PixelSearch(long nLeft, long nTop, long nRight, long nBottom, long nCol, /*default 0*/long nVar, /*default 1*/long nStep, LPPOINT pPointResult);
je viens simple pas plus. Dll et Aider hängen am Beitrag à.
Salut Christian |
| | | | |
| | | | | - page 3 - |
|  Thomas Freier | non, J'avais oublié. eh bien ca va et droite zügig (17.5MB). Würde cependant den ersten weissen Pixel à anderer Stelle vermuten, z.B.: chez den Sonnenschirmen. Verkleinertes Beispiel. Fundort ist identique x=609, y=398. |
| | | | |
| |  Christian Schneider | RGH
Salut,
sur quoi beziehen sich qui Koordinaten, dans denen gesucht wird? Beziehen qui sich sur den Desktop, irgenein la fenêtre, irgenmdeine Bitmap, ou bien quoi entier d'autre?
je vermute la fois sur den Desktop. Zwar gibt es dans AutoIt selbst chez qui Funktion une optionalen paramètre pour un Handle, cependant steht cet dans qui .dll scheinbar pas zur Disposition (zumindest pas dans qui Funktion selbst / Hinweise sur une Einstellmöglichkeit per anderer Funktion konnte je également pas trouver).
RGH
là qui DLL, comment dessus geschrieben steht, offensichtlich initialisiert volonté doit, muss vous naturellement aussi zuallererst avec UseDLL dans den grenier geladen volonté. Ist vous ca pas, serait vous zwar beim Aufruf qui Init-Funktion dans den den grenier geladen, qui Funktion fonctionnement, mais anschließend tout de suite wieder entladen werde. ensuite wäre qui initialisation pour qui Katz!
je muss gestehen cela était mir bisher pas bewusst. Habe déjà un peu sur cette la base herumprobiert, cependant avec dem gleichen Ergebnis comment bisher.
RGH
je serait vermuten, dass avant dem Aufruf de AU3_PixelSearch seulement autre Aufrufe avoir lieu doit, avec cela quoi voilà, dans dem gesucht volonté peux.
comment dessus geschrieben konnte je puis keinen Hinweis trouver. Zwar gibt es quelques Optionen qui on per AutoItSetOption mettons pourrait, cependant rien quoi wirklich passt. Aussi ist toujours un Default-Wert vorhanden. |
| | | | |
| |  | je hatte oublier qc une Code [...] trop posten. |
| | | | |
| |  Christian Schneider | merci. juste la fois einlesen. |
| | | | |
| |  Christian Schneider | qui Code fonctionne chez mir im Originalzustand sans Probleme.
eh bien ca va mir tout autor plusieurs Farbvorkommen pour trouver (si vorhanden). mais c'est pas cela eigentliche Problem. peux mir quelqu'un begreiflich faire pourquoi qui folgende 1. Code fonctionne et qui 2. pas?
1: KompilierenMarqueSéparationCLS
var HPIC&=CREATE(hNewPic,1024,1024,0)
var X&=RND(1024)
var Y&=RND(1024)
var COL&=$00FF00
STARTPAINT HPIC&
SETPIXEL X&,Y&,COL&
ENDPAINT
Declare SOMEPOS&
SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)
SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)
PRINT X&,Y&
PRINT HIWORD(SOMEPOS&),LOWORD(SOMEPOS&)
WAITINPUT
END
proc HPIC.BGR2STRING
PARAMETERS H&,_WIDTH&,_HEIGHT&
var SZ&=( (_WIDTH&*328-1) | 3 +1) * ABS(_HEIGHT&)
DECLARE MEM#
DIM MEM#,BITMAPINFOHEADER
WITH MEM#
.BISIZE&=SIZEOF(MEM#)
.BIWIDTH&=_WIDTH&
.BIHEIGHT&=_HEIGHT&
.BIPLANES%=1
.BIBITCOUNT%=32
.BICOMPRESSION&=0
.BISIZEIMAGE&=SZ&
ENDWITH
DECLARE DATA#
DIM DATA#,SZ&
var RET$=
IF ~GetDIBits(%HDC,H&,0,_HEIGHT&,DATA#,MEM#,0)
RET$=CHAR$(DATA#,0,SZ&)
ENDIF
DISPOSE DATA#
DISPOSE MEM#
RETURN +RET$
endproc
proc HPIC.PIXELSEARCH
PARAMETERS H&,COLORTOFIND&,_WIDTH&,_HEIGHT&
var RAWDATA$=HPIC.BGR2STRING(H&,_WIDTH&,_HEIGHT&)
var _FND&=HPIC.FINDCOLORINRAWDATA(COLORTOFIND&,RAWDATA$)
IF _FND&=-1
RETURN _FND&
ENDIF
var X&=_FND& MOD _WIDTH&
var Y&=0
IF _FND& > 0
Y&=_FND&\_WIDTH&
ENDIF
RETURN X&*65536+(_HEIGHT&-Y&-1)
endproc
proc HPIC.FINDCOLORINRAWDATA
PARAMETERS COL&,DATA$
var C&=1
var P&=0
var SCOL$=CHR$(GETBVALUE(COL&))+CHR$(GETGVALUE(COL&))+CHR$(GETRVALUE(COL&))
WHILE 1
P&=INSTR(SCOL$,DATA$,C&)
IFNOT P&
BREAK
ENDIF
IFNOT (P&-1) MOD 4
RETURN P&*0.25
ENDIF
C&=P&+1
ENDWHILE
RETURN - span class=s2>1
endproc
2: KompilierenMarqueSéparation $H windows.ph
STRUCT BITMAPINFOHEADER=BISIZE&,BIWIDTH&,BIHEIGHT&,BIPLANES%,BIBITCOUNT%,BICOMPRESSION&,BISIZEIMAGE&,BIXPELSPERMETER&,BIYPELSPERMETER&,BICLRUSED&,BICLRIMPORTANT&
RANDOMIZE
CLS
var HPIC&=CREATE(hNewPic,1024,1024,0)
var X&=RND(1024)
var Y&=RND(1024)
var COL&=$00FF00
STARTPAINT HPIC&
SETPIXEL X&,Y&,COL&
ENDPAINT
Déclarer SOMEPOS&
Whileloop 2
SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)
Endwhile
PRINT X&,Y&
PRINT HIWORD(SOMEPOS&),LOWORD(SOMEPOS&)
WAITINPUT
FIN
proc HPIC.BGR2STRING
PARAMETERS H&,_WIDTH&,_HEIGHT&
var SZ&=( (_WIDTH&*328-1) | 3 +1) * ABS(_HEIGHT&)
DECLARE MEM#
DIM MEM#,BITMAPINFOHEADER
WITH MEM#
.BISIZE&=SIZEOF(MEM#)
.BIWIDTH&=_WIDTH&
.BIHEIGHT&=_HEIGHT&
.BIPLANES%=1
.BIBITCOUNT%=32
.BICOMPRESSION&=0
.BISIZEIMAGE&=SZ&
ENDWITH
DECLARE DATA#
DIM DATA#,SZ&
var RET$=
IF ~GetDIBits(%HDC,H&,0,_HEIGHT&,DATA#,MEM#,0)
RET$=CHAR$(DATA#,0,SZ&)
ENDIF
DISPOSE DATA#
DISPOSE MEM#
RETOUR +RET$
endproc
proc HPIC.PIXELSEARCH
PARAMETERS H&,COLORTOFIND&,_WIDTH&,_HEIGHT&
var RAWDATA$=HPIC.BGR2STRING(H&,_WIDTH&,_HEIGHT&)
var _FND&=HPIC.FINDCOLORINRAWDATA(COLORTOFIND&,RAWDATA$)
IF _FND&=-1
RETOUR _FND&
ENDIF
var X&=_FND& MOD _WIDTH&
var Y&=0
IF _FND& > 0
Y&=_FND&\_WIDTH&
ENDIF
RETOUR X&*65536+(_HEIGHT&-Y&-1)
endproc
proc HPIC.FINDCOLORINRAWDATA
PARAMETERS COL&,DATA$
var C&=1
var P&=0
var SCOL$=CHR$(GETBVALUE(COL&))+CHR$(GETGVALUE(COL&))+CHR$(GETRVALUE(COL&))
WHILE 1
P&=INSTR(SCOL$,DATA$,C&)
IFNOT P&
BREAK
ENDIF
IFNOT (P&-1) MOD 4
RETOUR P&*0.25
ENDIF
C&=P&+1
ENDWHILE
RETOUR -1
endproc
qui Unterschied liegt y cela im 1. Beispiel qui Suchfunktion 2x aufgerufen wird KompilierenMarqueSéparation et im 2. Beispiel également, allerdings per Whileloop KompilierenMarqueSéparation Im 2. Beispiel werde je puis hingewiesen cela Scol$ pas deklariert sei, quoique vom Verständnis her cela Gleiche passer sollte. Bien sûr pouvoir qui doppelte Aufruf keinen Sinn. cet Varianten sommes lediglich zur Fehlersuche entstanden. |
| | | | |
| |  | j'ai getestet 2 la fois aufzurufen + klappt. sur qui Schnelle konnte je dans Deinem Beispiel den faute pas erkennen. KompilierenMarqueSéparation {$cleq}
{$runtime c:xprofan11}
randomize
const xx=1024
const yy=1024
cls
long hPic=create(hNewPic,xx,yy,0)
long x=rnd(xx),y=rnd(yy)
long col=$00FF00
startPaint hPic
setPixel x,y,col
endPaint
long somePos=hPic.PixelSearch(hPic,col,xx,yy)
print x,y
print hiWord(somePos),loWord(somePos)
x=rnd(xx)
y=rnd(yy)
startPaint hPic
cls
setPixel x,y,col
endPaint
somePos=hPic.PixelSearch(hPic,col,xx,yy)
locate 3,1
print x,y
print hiWord(somePos),loWord(somePos)
waitInput
end
string hPic.bgr2String(long h,_width,_height){
long sz=( (_width*328-1) | 3 +1) * abs(_height)
mem mem=bitmapInfoHeader
with mem
.biSize& = sizeof(mem)
.biWidth& = _width
.biHeight& = _height
.biPlanes% = 1
.biBitCount% = 32
.biCompression& = BI_RGB
.biSizeImage& = sz
endwith
mem data=sz
string ret=error
case ~getDIBits(hDC,h,,_height,data,mem,) : ret=char$(data,0,sz)
dispose data
dispose mem
return ret
}
long hPic.PixelSearch(long h,colorToFind,_width,_height){
string rawData=hPic.bgr2String(h,_width,_height)
long _fnd=hPic.findColorInRawData(colorToFind,rawData)
case _fnd==-1 : return _fnd
long x=_fnd mod _width,y
case _fnd > 0 : y=_fnd\_width
return x*65536+(_height-y-1)
}
long hPic.findColorInRawData(long col,string data){
long c=1,p
string sCol=chr$(getBValue(col))+chr$(getGValue(col))+chr$(getRValue(col))
do {
p=instr(sCol,data,c)
casenot p : break
casenot (p-1) mod 4 : return p*0.25
c=p+1
}
return span class=s2>- 1
}
si es ensuite später ums trouver mehrerer Pixel allez serait je hPic.bgr2String seulement einmalig appel. |
| | | | |
| |  Jörg Sellmeyer | tiens dans qui Aider sous Retour pour:
important: aussi si une Procédure avec Retour sortir de wird, muss qui définition qui Procédure avec ENDPROC abgeschlossen volonté. cela sortir de einer Procédure darf pas dedans einer Tandis que-/Repeat-Boucle avoir lieu.
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 04.03.2009 ▲ |
| |
| |  Christian Schneider | merci, cela erklärt Einiges. |
| | | | |
| |  | | | | | |
| | | | - page 4 - |
| |  Christian Schneider | une variante qui aussi plusieurs Vorkommen auflistet KompilierenMarqueSéparation $H windows.ph
STRUCT BITMAPINFOHEADER=BISIZE&,BIWIDTH&,BIHEIGHT&,BIPLANES%,BIBITCOUNT%,BICOMPRESSION&,BISIZEIMAGE&,BIXPELSPERMETER&,BIYPELSPERMETER&,BICLRUSED&,BICLRIMPORTANT&
Declare SEARCHPOSITION&,SOMEPOS&[],Rawdata$
SEARCHPOSITION&=1
RANDOMIZE
CLS
var HPIC&=CREATE(hNewPic,1024,1024,0)
var X&=RND(1024)
var Y&=RND(1024)
var COL&=$00FF00
STARTPAINT HPIC&
SETPIXEL 1,999,COL&
SETPIXEL 100,230,COL&
SETPIXEL 100,220,COL&
SETPIXEL 100,231,COL&
ENDPAINT
suchfunktion(1024,1024,COL&)
Whileloop Sizeof(Somepos&[])
PRINT HIWORD(SOMEPOS&[&Loop-1]),LOWORD(SOMEPOS&[&loop-1])
Endwhile
WAITINPUT
END
proc suchfunktion
Clear Rawdata$
Clear Somepos&[]
Parameters searchx&,searchy&,color&
var durchlauf&=0
var arraysize&=2
Somepos&[0]=0
Whilenot SOMEPOS&[arraysize&-2]=-709309
SOMEPOS&[durchlauf&]=HPIC.PIXELSEARCH(HPIC&,color&,1024,1024)
SOMEPOS&[durchlauf&+1]=0
arraysize&=sizeof(somepos&[])
inc durchlauf&
Endwhile
SetSize Somepos&[], (Sizeof(Somepos&[])-2)
clear durchlauf&
endproc
proc HPIC.BGR2STRING
PARAMETERS H&,_WIDTH&,_HEIGHT&
var SZ&=( (_WIDTH&*328-1) | 3 +1) * ABS(_HEIGHT&)
DECLARE MEM#
DIM MEM#,BITMAPINFOHEADER
WITH MEM#
.BISIZE&=SIZEOF(MEM#)
.BIWIDTH&=_WIDTH&
.BIHEIGHT&=_HEIGHT&
.BIPLANES%=1
.BIBITCOUNT%=32
.BICOMPRESSION&=0
.BISIZEIMAGE&=SZ&
ENDWITH
DECLARE DATA#
DIM DATA#,SZ&
var RET$=
IF ~GetDIBits(%HDC,H&,0,_HEIGHT&,DATA#,MEM#,0)
RET$=CHAR$(DATA#,0,SZ&)
ENDIF
DISPOSE DATA#
DISPOSE MEM#
RETURN +RET$
endproc
proc HPIC.PIXELSEARCH
PARAMETERS H&,COLORTOFIND&,_WIDTH&,_HEIGHT&
if @len(rawdata$)<1
RAWDATA$=HPIC.BGR2STRING(H&,_WIDTH&,_HEIGHT&)
endif
var _FND&=HPIC.FINDCOLORINRAWDATA(COLORTOFIND&,RAWDATA$)
IF _FND&=-1
RETURN _FND&
ENDIF
var X&=_FND& MOD _WIDTH&
var Y&=0
IF _FND& > 0
Y&=_FND&\_WIDTH&
ENDIF
RETURN X&*65536+(_HEIGHT&-Y&-1)
endproc
proc HPIC.FINDCOLORINRAWDATA
PARAMETERS COL&,DATA$
var C&=SEARCHPOSITION&
var P&=0
var SCOL$=CHR$(GETBVALUE(COL&))+CHR$(GETGVALUE(COL&))+CHR$(GETRVALUE(COL&))
P&=INSTR(SCOL$,DATA$,C&)
SEARCHPOSITION&=P&+1
IFNOT P&
RETURN -1000000000000
ENDIF
IFNOT (P&-1) MOD 4
RETURN P&*0.25
EndIF
C&=P&+1
endproc
|
| | | | |
| |  | cela est mais plutôt ici [...] hin (s'il te plaît là ergänzen) - ici ca va oui um AutoItX3.dll - PixelSearch Funktionsaufruf. |
| | | | |
| |  Christian Schneider | Alles bien sûr je packs en supplément. Dachte mir seulement cela vom Urthema ici eh pas plus so viel übrig ist. |
| | | | |
|
répondreOptions du sujet | 23.868 Views |
Themeninformationencet Thema hat 5 participant: |