| |
|
|
- Seite 1 - |
|
Christian Schneider | Hallo,
ich stehe leider mal wieder auf Kriegsfuß mit einer .dll. Diesmal ist es die AutoItX3.dll. Ich möchte die Funktion AU3_PixelSearch aufrufen. KompilierenMarkierenSeparieren Wie müsste jetzt der entsprechende Aufruf aussehen? Die 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);
Ich komme einfach nicht weiter. Dll und Hilfe hängen am Beitrag an.
Gruß Christian |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Christian Schneider | Die dll muss wohl vorher initialisiert werden. Allerdings klappt folgender Code ebenfalls nicht KompilierenMarkierenSeparierenCls
Declare Test#
Dim Test#,8
Var a& = Test#
External(AutoItX3.dll,AU3_Init)
Print External(AutoItX3.dll,AU3_error)
Print External(AutoItX3.dll,AU3_PixelSearch,4, 4, 4, 4, $0000FF, 0, 1, a&)
oder noch wahrscheinlicher
Print External(AutoItX3.dll,AU3_PixelSearch,4, 4, 4, 4, $0000FF, 0, 1, Addr(a&))
Dispose Test#
WaitInput
|
|
|
| |
|
|
|
| @Christian: von 4,4 nach 4,4? (Und wrm. der Umweg über a&?) |
|
|
| |
|
|
|
| Aber dennoch mal die Frage: Diese Funktion soll was genau machen? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Christian Schneider | iF
Dürfte veraltet sein.
iF
24th May, 2006 - v3.1.1.1 (Beta)
* Added:
* Removed:
* Changed: PixelSearch now returns an array (COM) and POINT (DLL)
iF
Aber dennoch mal die Frage: Diese Funktion soll was genau machen?
Ich möchte damit einen vorgegebenen Bereich (in meinem Fall den Bereich wo sich das Fenster einer VM befindet) nach einer bestimmten Farbe suchen und als Ergebnis die Koordinaten erhalten wo diese Farbe vorkommt.
iF
@Christian: von 4,4 nach 4,4? (Und wrm. der Umweg über a&?)
Ok, die Werte sind nicht wirklich sinnvoll, darum wollte ich mich kümmern sobald das Programm nicht mehr abschmiert. |
|
|
| |
|
|
|
Jörg Sellmeyer | Die 4,4 war eimn kleiner Fehler meinerseits. Sollte 4,4,400,400 heißen und der Umweg über a&... Immerhin ein Versuch wert, es mal über die Adresse des Bereichs zu versuchen. Eigentlich ist Bereich# ja schon die Adresse aber versuch macht kluch. Vielleicht muß ja in /*default 0*/long nVar, die Größe des Bereichs noch angegeben werden... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.02.2009 ▲ |
|
|
|
|
| Aha, daraum gehts also: [...]
; Find a pure red pixel in the range 0,0-20,300 $coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )
@Christian: Geht es Dir um die DLL oder um die Funktionalität?
Übrigens, die im Beispiel dort angewandte Farbkonstante $FF0000 ist nach meiner Rechnung nicht Rot sondern Blau. |
|
|
| |
|
|
|
Christian Schneider | Prinzipiell gehts mir um die Funkionalität. Allerdings enthält die dll einige sehr interessante Funktionen, so das ich sie schon gerne nutzen wollte. Die Pixel ließen sich sicherlich auch mit Boardmitteln finden, jedoch rechne ich da mit erheblichen Performanceeinbußen. |
|
|
| |
|
|
|
| Unabhängig von der DLL - kannst Du das anhängige Programm bitte einmal testen?
Ein SS.BMP wird geladen und das weisse Pixel $FFFFFF wird gesucht.
Bitte auch einmal mit grossen Bildern probieren und auf die Geschwindigkeit achten.
Ich wollte mir sowas ja sowieso basteln, hier eine Variante die mit reinem XProfan auskommt.
Sollte auch mit grossen Bilder sehr fix funktionieren - vielleicht sogar schneller als die Variante der DLL. |
|
|
| |
|
|
|
Christian Schneider | Läuft bei meinen Schnelltests problemlos und recht schnell(auch mit Bildern >50MB). Wäre natürlich super wenn es auch unabhängig von Bildateien funktionieren würde (wobei der Umweg über einen Screenshot auch verkraftbar ist). Interessant wäre noch das mehrfache Vorkommen einer Farbe abfragen zu können (z.B. in einem Array) oder eine Art FindNext. |
|
|
| |
|
|
|
| Als Exe statt XPrf ja nur, weil ich einige Includes nutze und das Ganze nicht gleich auseinanderfitteln wollte.
Anz. d. Vorkommen einer Farbe wäre ebenso kein Problem.
Bin ich heute Abend wieder Zuhaus, bereite ich das mal auf. |
|
|
| |
|
|
|
RGH | Hallo,
ich habe mal eine Frage zu dem Beispielcode für AU3_PixelSearch, der oben steht: Auf was beziehen sich die Koordinaten, in denen gesucht wird? Beziehen die sich auf den Desktop, irgenein Fenster, irgenmdeine Bitmap, oder was ganz anderes? Vielleicht kracht es ja deshalb, weil hier ein Zugrif ins Leere erfolgt. Da die DLL, wie oben geschrieben steht, offensichtlich initialisiert werden muß, muss sie natürlich auch zuallererst mit UseDLL in den Speicher geladen werden. Ist sie dies nicht, würde sie zwar beim Aufruf der Init-Funktion in den den Speicher geladen, die Funktion ausgeführt, aber anschließend sofort wieder entladen werde. Dann wäre die Initialisierung für die Katz! Ist sie vor dem EXTERNAL-Aufruf schon im Speicher, bleibnt sie anschließend auch dort und behält ihre Werte und Daten. Ich würde vermuten, dass vor dem Aufruf von AU3_PixelSearch erst andere Aufrufe erfolgen müssen, damit was da ist, in dem gesucht werden kann. (Sorry, auf meinem Arbeitsplatzrechner kann ich die Doku leider nicht aufrufen und studieren.)
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.02.2009 ▲ |
|
|
|