Bueno, bueno ... Vaya tinglao para hacer una dll con VB 6, es más difícil casi compilarla que escribir el código...
Casi he hecho que funcione, un script de AutoIt, llamando a una dll hecha por mí.
Algo bueno tenía que tener todo esto, además de aprender otro lenguaje, y esque, ahora después de leer, leer y leer la ayuda de DllCall() (que antes no terminaba de entender) pues ahora, entiendo perfectamente (o eso creo) la función y ¡hasta casi me se todos los tipos de datos, y la equivalencia con las APIS de Windows! jejejeje.
Pero; o me hago un taco con los tipos (yo creo que no), o el taco está en las funciones de VB.
Resulta que he leido, que da problemas el hecho de usar cadenas en las funciones de una dll, pero que puede arreglarse. Dicen en una página, que por un lado hay que pasar los parámetros a la función con algo como esto:
Código: Seleccionar todo
SValue = StrConv(sValue, vbUnicode)
¿Qué hace esta función exactamente? (esto es de VB 6).
¿A que convierte la cadena? y ¿Como se hace en AutoIt esto mismo?, porque no soy capaz de pasarle una cadena como parámetro a la función de la dll.
Entiendo que el código anterior convierte a unicode, y he visto en la ayuda de DllCall, que wstr es eso mismo, pero nada. Salta lo de los informes de errores de Windows.
Dice en la misma página, que la función debe retornar la cadena así:
Código: Seleccionar todo
sValue = StrConv(sValue, vbFromUnicode)
Aunque devolviendo directamente la cadena sin convertirla, indicando en AutoIt wstr como tipo de retorno, obtengo bien la cadena.vbFromUnicode
A ver si alguien que haya manejado VB me hecha un cable pa explicarme el rollo este ...
Acias,
Salu2!