如何获得" EDIT"的文本从另一个线程控制?

时间:2015-04-11 08:47:59

标签: multithreading winapi

我已经读过,我应该只使用PostMessage()告诉UI线程访问UI控件。

如果我是设置"EDIT"控件的文本,则遵循此方法没有问题。但是,如果我想获取"EDIT"控件的文本,如果我使用PostMessage()向UI线程发送消息,那么PostMessage()将在文本设置之前立即返回缓冲区,那我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

出于此目的,出于您所识别的原因,您无法使用PostMessageWM_GETTEXT是同步消息。你应该做的是:

  • 如果窗口在您的过程中,那么您应该使用GetWindowText
  • 如果窗口处于不同的过程中,则应调用SendMessageTimeout

为什么SendMessageTimeout而不是SendMessage?好吧,如果其他进程已挂起但没有响应,则使用SendMessage永远不会返回。

此处有更多关于此主题的讨论:The secret life of GetWindowText