想用发送自定义消息的方式跨进程传递字符串,尝试过并失败的方法有:
1, new一个CString
2, TCHAR 数组
3, API GlobalAlloc()
皆因为分配的内存都在发送方进程的heap内
这里使用GlobalAlloc()也失败的原因是,在win32内,该函数与LocalAlloc()已没有分别,但好像如果不使用GMEM_FIXED参数,而是GMEM_MOVEABLE就可以跨进程?因为此时返回的是一个handle,而非指针,需要用GlobalLock()才能从这个handle得到真正的指针,没试过,不知真假
最后我用的方法是使用映射文件,创建一个全局的名字即可,
发送方:
HANDLE hSendFileMap
=
CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
0
,
96
,
"
DelDeveiceDataMap
"
);
if
(hSendFileMap)
...
{
pApp->pDelDeviceEntity = (pDEL_DEVICE_ENTITY)MapViewOfFile(hSendFileMap, FILE_MAP_WRITE,

本文探讨了跨进程传递字符串遇到的问题及解决方案,包括尝试使用CString、TCHAR数组、GlobalAlloc()等方法失败,最终通过创建映射文件实现成功。此方法利用全局名称,简化了跨进程数据传递的复杂性。
最低0.47元/天 解锁文章
5545

被折叠的 条评论
为什么被折叠?



