| |
|
|
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 |
|
|
| |
|
|
|
| Einfachst KompilierenMarkierenSeparieren - wenn das nicht klappen sollte bitte melden.
Lustig - solch Funktion wollte ich erst neulig in eine DLL packen für XProfan - vlt. hole ich das nach. |
|
|
| |
|
|
|
Christian Schneider | Ok, ich hätte mein Problem vielleicht etwas genauer beschreiben sollen
Vorweg zum kurzen Verständnis: Das von mir verwendete ImportFunc hat doch vom Prinzip her die gleiche Funktion wie Externals (abgesehen davon das die Funktion nicht direkt aufgerufen wird) oder?
Der Part der eben fehlte:
Wenn ich die Funktion aufrufe, z.B. wie jetzt getestet mit KompilierenMarkierenSeparieren verabschiedet sich der Interpreter (AccessViolation xy...). |
|
|
| |
|
|
|
| Die Parameter in Typ und Anzahl müssen genau eingehalten werden - glaube das ist hier nicht der Fall was den Absturz erklären könnte. |
|
|
| |
|
|
|
Christian Schneider | Hast Recht, hab einen Parameter zu wenig verwendet. Ich dachte die letzten 3 wären optional. Allerdings bleibt das Ergebnis das Gleiche. KompilierenMarkierenSeparieren Ich wüsste im Moment leider auch nicht was ich sinnvoll verändern könnte. |
|
|
| |
|
|
|
| AU3_PixelSearch(long nLeft, long nTop, long nRight, long nBottom, long nCol, long nVar, long nStep, LPPOINT pPointResult)
Ich zähle 8 Parameter!
(Bei derart nativen Aufrufen gibt es windows-technisch bedingt optionale Parameter nicht.) |
|
|
| |
|
|
|
Christian Schneider | Ok, mit Rückgabewert (der ja auch ganz sinnvoll ist ;) ) sind es dann 8. Ich werd dann damit nochmal ein wenig rumprobieren. |
|
|
| |
|
|
|
Christian Schneider | Bin immer noch so weit wie vorher. Gehe mittlerweile davon aus das es am Rückgabewert liegt (LPPOINT pPointResult -> Returns a 2 element array containing the pixels coordinates)
Ist das jetzt ein Pointer auf eine strukturierte Bereichsvariable, ein Array oder auf irgendwas völig anderes mit dem ich überhaupt nicht rechne? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Christian Schneider | Mir gehen langsam endgültig die Ideen aus. Habe so ziemlich alles versucht. Sämtliche Variablentypen, als Pointer, CDECL... Bin für jeden Tipp dankbar. Codes zum posten hab ich leider keine, bzw. ich wüsste nicht welche ich dafür nehmen sollte. Andere Funktionen der dll habe ich auch getestet, diese laufen. Als Fehlerquelle vermute ich nach wie vor den Rückgabewert (weil sich die Funktion lediglich dadurch von den bei mir lauffähigen unterscheidet). |
|
|
| |
|
|
|
Jörg Sellmeyer | Ich würde es ja so vermuten aber ein kurzer Test zeigt, daß auch das knallt: KompilierenMarkierenSeparierenCls
Declare Test#
Dim Test#,8
Var a& = Test#
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
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.02.2009 ▲ |
|
|
|
|
| Vlt. die DLL zunächst per UseDLL einladen. |
|
|
| |
|
|