Что имеется:
объект StdPicture с растром в формате BMP.
Что нада:
Получить байтовый массив, являющий собой файл BMP. Т.е. файл, который бы получился если VB.SavePicture сделать.
При этом неззя пользоваться временным файлом!
Что я уже мозгом наскрипел:
Делаю CreateFileMapping так:
- Код: Выделить всё
lngHFileMapping = CreateFileMapping(INVALID_HANDLE_VALUE, _
udtSECURITY_ATTRIBUTES, _
SEC_RESERVE Or PAGE_READWRITE, _
0&, _
10000&, _
"ImageTempFile")
Теперь сохраняю картинку (clsPic это StdPicture) так:
- Код: Выделить всё
VB.SavePicture clsPic, "ImageTempFile"
Потом делаю так:
- Код: Выделить всё
Dim lngMapViewPtr As Long
VB.SavePicture clsPic, "ImageTempFile"
lngMapViewPtr = MapViewOfFile(lngHFileMapping, _
FILE_MAP_READ, _
0&, _
0&, _
10000&)
If lngMapViewPtr <> 0& Then
ReDim oData(9999&) As Byte
'Вот тут ВСЁ <censored> ВЫЛЕТАЕТ с Memory Exeption!!!
CopyMemory oData(0), ByVal lngMapViewPtr, 2&
UnmapViewOfFile ByVal lngMapViewPtr
End If