** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Compatibilidad 64 bits VBA
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCompatibilidad 64 bits VBA

 Responder Responder Página  <12
Autor
Mensaje
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Enviado: 12/Agosto/2016 a las 08:41
Emilio (emiliove), excelente visor de API. Muchas gracias, nos va a servir de mucho, por lo menos a mi.
Pero tampoco entiendo una cosa...al final hay funciones como esta para #Win64

Declare PtrSafe Function AbortPrinter Lib "winspool.drv" Alias "AbortPrinter" (ByVal hPrinter As LongPtr) As Long  que en vez de devolver un LongPtr como parecería lógico, devuelve un long normal.
No sé, es probable que devuelva la longitud en bits que realmente necesita...

Lo mismo, con este visor que desconocía, me paso las APIS de mi pequeña aplicación...me ha animado.
Ya lo miraré con más calma y veré si están recogidas la mayoría de APIS mas conocidas
Me recuerda mucho a la Api Guide de hace años...que por cierto, sigo teniendo grabada y operativa en mi ordenador.


Expulsado de la cárcel por robar los barrotes
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Enviado: 12/Agosto/2016 a las 08:44
...y con vuestro permiso y dado que al final se han dado excelentes respuestas a un tema que puede ser peliagudo para algunos, paso (Muevo) este hilo a Tus funciones Favoritas para que no se pierda...en las profundidades del foro...
Expulsado de la cárcel por robar los barrotes
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Enviado: 12/Agosto/2016 a las 08:53
Y por si acaso se pierde la fuente original:
http://www.rondebruin.nl/win/dennis/windowsapiviewer.htm

Subo aqui los dos visores de API para declaraciones tanto de 32 como de 64 bits (Y una vez más muchas gracias, Emilio):

Visor x86
Visor x64

Edito: Aclaro...tanto Visor X86 como Visorx64 recogen ambos las declaraciones de API para sistemas de 32 y 64 bits.
Lo del nombre de los ficheros que se ponen a la bajada es que al autor ha querido hacer dos aplicaciones, una de 32 y otra de 64 bits para los respectivos WIndows. Pero ambos ficheros muestran la misma información.

Editado por buho - 12/Agosto/2016 a las 08:55
Expulsado de la cárcel por robar los barrotes
Arriba
Bacterio Ver desplegable
Moderador
Moderador
Avatar

Unido: 16/Octubre/2004
Localización: España
Estado: Sin conexión
Puntos: 2077
Enlace directo a este mensaje Enviado: 12/Agosto/2016 a las 10:25
Publicado originalmente por buho buho escribió:

Publicado originalmente por Bacterio Bacterio escribió:

<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SetTimer (ByVal hWnd As IntPtr, ByVal nIDEvent As IntPtr, ByVal uElapse As UInteger, ByVal lpTimerFunc As IntPtr) As IntPtr
End Function

Public Declare PtrSafe Function SetTimer Lib "user32" (ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As LongPtr, ByVal lpTimerFunc As LongPtr) As LongPtr



Ricardo...¿Por qué uElapse lo has declarado como LongPtr en VBA si en Net estaba como UInteger?

Es un error. Debería ser un long. 

En VBA/VB6, no existen los tipos de datos sin signo. Aunque tanto un "long" de VBA como un "UInteger" de .NET usan 4 bytes, el rango numérico es distinto porque en los tipos con signo, el último bit se usa para el signo. De ese modo:

Max. valor para long = [-2^31, 2^31 - 1]
Max. valor para UInteger = [0, 2^32 - 1]

No nos afecta la diferencia de rangos numéricos porque al ser un parámetro de entrada nosotros escogemos el valor. 

Publicado originalmente por buho buho escribió:

Emilio (emiliove), excelente visor de API. Muchas gracias, nos va a servir de mucho, por lo menos a mi.
Pero tampoco entiendo una cosa...al final hay funciones como esta para #Win64

Declare PtrSafe Function AbortPrinter Lib "winspool.drv" Alias "AbortPrinter" (ByVal hPrinter As LongPtr) As Long  que en vez de devolver un LongPtr como parecería lógico, devuelve un long normal.
No sé, es probable que devuelva la longitud en bits que realmente necesita...

Porque devuelve un booleano. Según la documentación de la api AbortPrinter http://https://msdn.microsoft.com/en-us/library/windows/desktop/dd162458(v=vs.85).aspx

Return value

If the function succeeds, the return value is a nonzero value.

If the function fails, the return value is zero.


No olvidemos que el tema de los 32 vs 64 se debe a que los handles, direcciones de memoria, etc, tienen que poder referenciar más allá de los 4 gb. Si un dato no es nada de lo anterior, no se ve afectado por el tema que nos ocupa.

Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Enviado: 12/Agosto/2016 a las 11:06
Smile
Expulsado de la cárcel por robar los barrotes
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable