SendMessage发送WM_GETTEXT获取编辑框会导致目标程序卡死的问题

Eddie780 2016-09-08 10:19:33

CString cs;
::SendMessage(文本框, WM_GETTEXT, 100, (LPARAM)(cs.GetBuffer()));
OutputDebugString(cs);


以上代码每次都能获取到目标窗口的文本框内容,但有时目标窗口和进程会消失,然后自身进程也消失!
像是发送消息后,目标程序自身处理消息循环时候崩溃!可本程序明明已经打印出了内容,为何自身程序也会跟着崩溃消失?
...全文
422 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-09-09
  • 打赏
  • 举报
回复
多线程的时候,不要在主线程(实际上拥有窗口的线程) 以外 sendmessage 到主线程对应的窗体
赵4老师 2016-09-09
  • 打赏
  • 举报
回复
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx
encoderlee 2016-09-09
  • 打赏
  • 举报
回复
CString cs; cs.GetBuffer(); 这种写法获得的buffer,你觉得这个buffer有多大,可以容纳多少个字符?
encoderlee 2016-09-08
  • 打赏
  • 举报
回复


CString cs;
::SendMessage(文本框, WM_GETTEXT, 100, (LPARAM)(cs.GetBuffer(100)));
cs.ReleaseBuffer();
OutputDebugString(cs);

尚书左仆射 2016-09-08
  • 打赏
  • 举报
回复
之后发生了什么就不管了。
尚书左仆射 2016-09-08
  • 打赏
  • 举报
回复
SendMessage是发送消息后阻塞,等待目标进程返回消息处理后的值,是同步的;PostMessage才是异步的,它只负责发送消息,至于之后发送了什么就不管了。
Eddie780 2016-09-08
  • 打赏
  • 举报
回复
崩溃消失是两个程序一起出现的,不会出现一个消失另一个没消失的情况。难道SendMessage发送WM_GETTEXT消息也是异步的吗?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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