Tratando de "wrapear" la función
GetBinaryType me encuentro con el problema de no poder definir "un puntero a long o dword" para pasar una variable por referencia. Para strings existe y es la constante LPSTR.
Mirando los ficheros DLL.CH he encontrado las constantes para ello:
- Code: Select all Expand view
#ifndef _C_TYPES
#define _C_TYPES
#define VOID 0
#define BYTE 1
#define CHAR 2
#define WORD 3
#ifdef __CLIPPER__
#define _INT 4 // conflicts with Clipper Int()
#else
#define _INT 7
#endif
#define BOOL 5
#define HDC 6
#define LONG 7
#define STRING 8
#define LPSTR 9
#define PTR 10
#define _DOUBLE 11 // conflicts with BORDER DOUBLE
#define DWORD 12
#define LONGLONG 13
#endif
Pero no existe ninguna constante de "puntero a long o dword".
En los "Windows Data Types"
https://msdn.microsoft.com/en-us/librar ... 51(v=vs.85).aspx están todos los tipos de variables, pero no me pone su valor de constante. Supongo que será la constante LPLONG o LPDWORD.
La constante LPSTR la define así:
A pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.Pero la función dice que tiene que ser LPCTSTR definida como:
An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings.En el ficheros DLL.CH tampoco tengo el valor de la constante LPCTSTR.
La definición de la función es esta:
- Code: Select all Expand view
BOOL WINAPI GetBinaryType(
_In_ LPCTSTR lpApplicationName,
_Out_ LPDWORD lpBinaryType
);
https://msdn.microsoft.com/en-us/library/aa364819(VS.85).aspx
El wrapeado es:
DLL32 FUNCTION GetBinaryType(cFile AS <no se que poner>, nType AS <no se que poner>) AS LONG PASCAL FROM "GetBinaryTypeW" LIB "Kernel32.dll"
Por otro lado la dll
Kernel32.dll dispone de dos funciones GetBinaryType: GetBinaryType
A (ANSI) y GetBinaryType
W (Unicode), y no se cual usar.
¿Se podrían tener todos los valores de los tipos de variables?