dll与exe之间传递数据的问题

reyo7 2007-01-05 12:31:01
应该是进程内传递数据的问题吧?
我用的是自定义消息,在dll中
int cTxtLen = GetWindowTextLength(p->hwnd);

char* szWndName = new char[cTxtLen + 1];

GetWindowText(p->hwnd,szWndName, cTxtLen+1);

SendMessage(g_hWnd,WM_DISPLAY_MSG,(WPARAM)szWndName,0);

delete [] szWndName;

exe接受端该如何写呢?
我自己写的总是不对。
...全文
406 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
reyo7 2007-01-05
  • 打赏
  • 举报
回复
总觉得接受端 AfxMessageBox((char*)wparam);的参数写得不对
reyo7 2007-01-05
  • 打赏
  • 举报
回复
回7楼:都说了这应该是进程内通信吧?
reyo7 2007-01-05
  • 打赏
  • 举报
回复
把delete注释掉,运行后windows提示错误,然后终止程序 -_-!
我原来也是遇到这种错误
更正 应该是 AfxMessageBox((char*)wparam);
wind235 2007-01-05
  • 打赏
  • 举报
回复
进程间传递数据
共享内存 管道.....
idAnts 2007-01-05
  • 打赏
  • 举报
回复
你直接把delete注释掉,看看是什么结果。
reyo7 2007-01-05
  • 打赏
  • 举报
回复
说得都不错,受教了响应消息函数我是这么写的:
BOOL CSurveillantView::onDisplay(WPARAM wparam,LPARAM lparam)
{
AfxMessageBox(char*(wparam));
}
请大家指教!
lovesnow1314 2007-01-05
  • 打赏
  • 举报
回复
在exe中的g_hWnd这个窗口(窗口不要搞错)的回调函数中,拦截WM_DISPLAY_MSG消息。

另外WM_DISPLAY_MSG的定义不要和系统的或者已经存在的重复.使用WM_USER+XXXX
shaojun1314 2007-01-05
  • 打赏
  • 举报
回复
我觉得一楼说的不对。。。
sendmessage一定会等到exe处理完以后才返回,你的exe里面如果正确处理完WM_DISPLAY_MSG消息,下面的delete才起作用,所以根本不影响。
在exe的主窗口加个消息响应函数就可以了

ON_MESSAGE(WM_DISPLAY_MSG,onDisplay)
........

你贴出你怎么写的,应该是你写的有问题
caocheng8230 2007-01-05
  • 打赏
  • 举报
回复
使用文件或者使用注册表进行数据传递吧!
我都是这样做的,还不错.
idAnts 2007-01-05
  • 打赏
  • 举报
回复
被你delete了。
在你的exe里new出来,然后把指针和长度给dll,dll对长度判断,合适就把内容写进去。
exe收到用完了自己delete。

或者像你这样写也行,不过dll这里别delete,dll再提供一个函数,参数是指针,专门delete。

另外你在exe里delete也行,不推荐这样。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧