Mi aplicación almacena los datos de las imágenes en la memória, pero luego necestito recuperarlos en una variable String. El problema es que para mover datos de la memória solo he encontrado la API RtlMoveMemory, y no acepta variables tipo String, sólo de tipo numérico, así que tengo que mover todos los datos a un array de tipo Byte. Aquí está el código:
Declaración de la API
Código:
Código (BufferAddress es la dirección en la memória donde están los datos):Private Declare Sub RtlMoveMemory Lib "kernel32" (ByRef des As Any, ByVal src As Long, ByVal cnt As Long) Private Declare Function GlobalHandle Lib "kernel32" (ByVal Addr As Long) As Long Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Código:
¿Que hago con el array?Private Function GetImageData (BufferAddress As Long) As String Dim BuffHandle As Long, BufferSize As Long Dim ImageInMemory() As Byte BuffHandle = GlobalHandle(BufferAddress) BufferSize = GlobalSize(BuffHandle) ReDim ImageInMemory(0 To BufferSize) As Byte RtlMoveMemory ImageInMemory(0), BufferAddress, BufferSize
Código:
He provado con hacer un bucle que vaya convirtiendo los valores del array en caracteres y los añada a una variable String, pero es muuuuuy lento. :( End Function
Gracias
Tortoll