Español
Foro

AutoItX3.dll - PixelSearch Funktionsaufruf

 
- Página 1 -



Christian
Schneider
¡Hola,

Yo stehe desafortunadamente veces otra vez en Kriegsfuß con uno .dll. Diesmal es el AutoItX3.dll.
Yo möchte el Función AU3_PixelSearch aufrufen.
KompilierenMarcaSeparación
CLS
Declare autodll&
autodll&=UseDll(AutoItX3.dll)
importFunc(autodll&,AU3_PixelSearch,PixelSearch)
Pixelsearch(???????????)
FreeDLL autodll&
Waitk

Como debería ahora el entsprechende Aufruf aussehen? El 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);


Yo komme simplemente no más. Dll y Ayuda hängen al Contribución a.

Saludo Christian

186 kB
Hochgeladen:23.02.2009
Ladeanzahl237
Descargar
306 kB
Hochgeladen:23.02.2009
Ladeanzahl185
Descargar
 
XProfan 11| Vista(64) SP2
23.02.2009  
 



 
- Página 3 -



Thomas
Freier
Nein, Se me había olvidado. Nun es y bastante zügig (17.5MB). Würde sin embargo el ersten weissen Pixel a otro Punto vermuten, z.B.: en el Sonnenschirmen. Verkleinertes Ejemplo. Fundort es identisch x=609, y=398.

1.203 kB
Hochgeladen:25.02.2009
Ladeanzahl169
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
25.02.2009  
 




Christian
Schneider
RGH
¡Hola,

Auf qué beziehen el Koordinaten, en denen gesucht se? Beziehen que en el Desktop, irgenein Ventana, irgenmdeine Mapa de bits, oder algo muy más?


Yo vermute veces en el Desktop. Zwar hay en AutoIt incluso en Función una optionalen Parámetro para una Handle, sin embargo es dieses en el .dll scheinbar no disponible (zumindest no en el Función incluso / Hinweise en una Einstellmöglichkeit por otro Función podría Yo ebenfalls no encontrar).

RGH
Como el DLL, como oben geschrieben es, offensichtlich initialisiert voluntad muß, muss ellos natürlich auch zuallererst con UseDLL en el Speicher geladen voluntad. Ist ellos esto no es, sería ellos zwar beim Aufruf el Init-Función en el el Speicher geladen, el Función ausgeführt, aber anschließend inmediatamente otra vez entladen voluntad. Dann wäre el Initialisierung para el Katz!


Yo muss gestehen el war me bisher no bewusst. Posesiones ya una wenig en dieser Base herumprobiert, sin embargo con el gleichen Ergebnis como bisher.

RGH
Yo sería vermuten, dass antes el Aufruf de AU3_PixelSearch sólo otro Aufrufe tener lugar necesario, así qué como es, en el gesucht voluntad kann.


Como oben geschrieben podría Yo darauf no Referencia encontrar. Zwar hay algunos Optionen el uno por AutoItSetOption conjunto podría, sin embargo nichts qué wirklich passt. Außerdem es siempre una Default-Valor disponible.
 
XProfan 11| Vista(64) SP2
25.02.2009  
 



Tuve vergessen una Code  [...]  para enviar.
 
03.03.2009  
 




Christian
Schneider
Gracias. Gleich veces einlesen.
 
XProfan 11| Vista(64) SP2
04.03.2009  
 




Christian
Schneider
Der Code se ejecuta en me en el Originalzustand sin Problemas.

Nun es me por lo tanto mehrere Farbvorkommen para encontrar (si está disponible). Aber el es no el eigentliche Problema. Kann me alguien begreiflich hacer por qué el folgende 1. Code se ejecuta y 2. no?

1:
KompilierenMarcaSeparación
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
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:
KompilierenMarcaSeparación
 $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
Declarar 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#
    RETORNO +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

        RETORNO _FND&

    ENDIF

    var X&=_FND& MOD _WIDTH&
    var Y&=0

    IF _FND& > 0

        Y&=_FND&\_WIDTH&

    ENDIF

    RETORNO 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

            RETORNO P&*0.25

        ENDIF

        C&=P&+1

    ENDWHILE

    RETORNO -1

ENDPROC


Der Diferencia liegt en él el en el 1. Ejemplo el Suchfunktion 2x aufgerufen se
KompilierenMarcaSeparación
SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)
SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)

y en el 2. Ejemplo ebenfalls, allerdings por Whileloop
KompilierenMarcaSeparación
Whileloop 2

    SOMEPOS&=HPIC.PIXELSEARCH(HPIC&,COL&,1024,1024)

Endwhile


Im 2. Ejemplo voluntad Yo darauf hingewiesen el Scol$ no deklariert sei, obwohl vom Verständnis her el Gleiche passieren debería. Natürlich macht el doppelte Aufruf no Sinn. Diese Varianten son lediglich a Fehlersuche entstanden.
 
XProfan 11| Vista(64) SP2
04.03.2009  
 



Yo habe getestet 2 Tiempo aufzurufen + klappt. Auf el Schnelle podría Yo en Deinem Ejemplo el Fehler no erkennen.
KompilierenMarcaSeparación
Wenn lo entonces später ums Finden mehrerer Pixel va sería Yo hPic.bgr2String sólo einmalig aufrufen.
 
04.03.2009  
 




Jörg
Sellmeyer
Mirar en el Ayuda bajo Volver después de:



Wichtig: Auch si una Procedimiento con Volver verlassen se, muss el Definition el Procedimiento con ENDPROC abgeschlossen voluntad. Das Verlassen uno Procedimiento darf no innerhalb uno Mientras que-/Repeat-Bucle tener lugar.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.03.2009  
 




Christian
Schneider
Gracias, el erklärt Einiges.
 
XProfan 11| Vista(64) SP2
04.03.2009  
 



Tjupp, muss Yo updaten.
 
05.03.2009  
 



 
- Página 4 -



Christian
Schneider
Un Variante el auch mehrere Vorkommen auflistet
KompilierenMarcaSeparación
 $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

 
XProfan 11| Vista(64) SP2
05.03.2009  
 



Das gehört aber más hier  [...]  hin (Por favor, hay ergänzen) - hier es sí en AutoItX3.dll - PixelSearch Funktionsaufruf.
 
05.03.2009  
 




Christian
Schneider
Alles klar Yo packs dazu. Dachte me sólo el vom Urthema hier eh no mehr así viel übrig es.
 
XProfan 11| Vista(64) SP2
05.03.2009  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

22.945 Views

Untitledvor 0 min.
Normann Strübli09.06.2020
Walter31.12.2018
Peter Max Müller19.12.2017
E.T.12.12.2015
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie