进程之间如何传递图像信息? 我想把在一个进程中获得的想信息以文件映射的方式传递到另外一个进程中进行处理,如何实现?最好能给出相关代码,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 提炼下下面说明创建一个名为MySharedMem的长度为4096字节的有名映射文件:HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),NULL,PAGE_READWRITE,0,0x1000,"MySharedMem");并映射缓存区视图:LPSTR pszMySharedMapView=(LPSTR)MapViewOfFile(hMySharedMapFile,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);其他进程访问共享对象,需要获得对象名并调用OpenFileMapping函数。HANDLE hMySharedMapFile=OpenFileMapping(FILE_MAP_WRITE,FALSE,"MySharedMem");一旦其他进程获得映射对象的句柄,可以象创建进程那样调用MapViewOfFile函数来映射对象视图。用户可以使用该对象视图来进行数据读写操作,以达到数据通讯的目的。当用户进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图:if (!UnmapViewOfFile(pszMySharedMapView)){ AfxMessageBox("could not unmap view of file"); } 这个图像信息是什么?如果是handle可以用BOOL DuplicateHandle( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions);直接复制handle如果是二进制数据,WM_COPYDATA或者CreateFileMapping OpenFileMapping 我以CreateFileMapping OpenFileMapping方式传递图像的信息:一个BITMAP结构以及结构里面bmBits指针指向的数据请问进程之间运用这种方式能够传递指针吗?如果能够传递,怎么传的?再就是BITMAP结构里面bmBits指向的数据该怎么样传递?谢谢大家的关注 getdibits得到图片数据,同时把hbitmap的数据写人一段地址.然后用wm_copydata来发送消息到其他的进程里. 我建议你创建共享文件以后,先构造一个BITMAPFILEHEADER写到你的共享文件里面,共14字节。然后填写BITMAPINFOHEADER,也顺序写进去,40字节。如果没有调色板了,接下来就直接写你的bmBits指向的数据。用memcpy传过去就可以。共享文件用bmp做扩展名,这样你可以在另一个进程用这些图像数据。也可以在共享文件关闭以后,得到一个标准的bmp文件,这样你就可以在任何地方使用了。 CString Find函数,为什么找不到子串 高手帮忙~~~,初学者,有很多问题 关于网络编程方面的一个如何放置服务程序的问题。 请各位大侠指点一下。运行状态下修改程序内部的常量存储区,谢谢 请问怎么实现窗口拆分呀 vc做开发,数据库一般选什么比较好? listbox在VC中得到其ITEM的文本 CRichEdit的一系列问题 给编程爱好者的倡议书 用OLE DB的消费者模板可以执行SELECT这样的sql语句,并返回相应的行集吗? 动态创建的的控件不响应消息 这里的if里面执行语句WaitForSingleObject有没有问题? 麻烦高手给看看
HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),
NULL,PAGE_READWRITE,0,0x1000,"MySharedMem");
并映射缓存区视图:
LPSTR pszMySharedMapView=(LPSTR)MapViewOfFile(hMySharedMapFile,
FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);其他进程访问共享对象,需要获得对象名并调用OpenFileMapping函数。
HANDLE hMySharedMapFile=OpenFileMapping(FILE_MAP_WRITE,
FALSE,"MySharedMem");一旦其他进程获得映射对象的句柄,可以象创建进程那样调用MapViewOfFile函数来映射对象视图。用户可以使用该对象视图来进行数据读写操作,以达到数据通讯的目的。当用户进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图:
if (!UnmapViewOfFile(pszMySharedMapView))
{ AfxMessageBox("could not unmap view of file"); }
如果是handle可以用
BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
LPHANDLE lpTargetHandle,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);
直接复制handle
如果是二进制数据,WM_COPYDATA或者
CreateFileMapping OpenFileMapping
一个BITMAP结构以及结构里面bmBits指针指向的数据
请问进程之间运用这种方式能够传递指针吗?如果能够传递,怎么传的?
再就是BITMAP结构里面bmBits指向的数据该怎么样传递?谢谢大家的关注
然后用wm_copydata来发送消息到其他的进程里.
我建议你创建共享文件以后,先构造一个BITMAPFILEHEADER写到你的共享文件里面,共14字节。
然后填写BITMAPINFOHEADER,也顺序写进去,40字节。如果没有调色板了,接下来就直接写你的bmBits指向的数据。用memcpy传过去就可以。共享文件用bmp做扩展名,这样你可以在另一个进程用这些图像数据。也可以在共享文件关闭以后,得到一个标准的bmp文件,这样你就可以在任何地方使用了。