Что-то уперся в простом казалось бы вопросе: передача данных между программами. Задача - есть картинка в одной программе ее надо передать в другую, причем, использовать именно FileMapping. (Clipboard и обычные файлы не подходят!!!)
Реализация (сама суть)
| Код | var hFileMapObj:THandle; lpBaseAddress:^TBitmap; ..... // Создаем файл, подготавливаем область копирования hFileMapObj := CreateFileMapping(MAXDWORD,Nil,PAGE_READWRITE,0,size,PAnsiChar('File1')); lpBaseAddress := MapViewOfFile(hFileMapObj,FILE_MAP_WRITE,0,0,size); lpBaseAddress^:=TBitmap.Create;
// Копируем картинку (lpBaseAddress^).Assign(image1.Picture.Bitmap) ....
|
вторая программа
| Код | var hFileMapObj:THandle; lpBaseAddress:^TBitmap; ..... // Открываем файл, подготавливаем область копирования hFileMapObj := OpenFileMapping(FILE_MAP_READ, FALSE, PAnsiChar('File1')); lpBaseAddress := MapViewOfFile(hFileMapObj,FILE_MAP_WRITE,0,0,size);
// получаем картинку image1.Picture.BitMap.Assign(lpBaseAddress^); //!!!!!!!!!!!!!!!!!! Здесь ошибка времени выполнения!!!!!!! ....
|
Как правильно передать картинку посредством FileMapping?
|