2013-07-02 63 views

回答

1

如果您想要从编辑控件中获取值,则根本不使用GetMessageGetMessage是为收到消息,但要从窗口中获得文本,你必须发送它是一个消息 - 即你使用SendMessage

要发送的消息是WM_GETTEXT(前面有WM_GETTEXTLENGTH)。或者更容易,使用操作系统为您提供的包装函数之一 - 在本例中为GetWindowTextGetDlgItemText。他们跨线程边界工作很好(甚至跨越进程边界)。

+0

“或者更容易一点,使用操作系统提供给你的包装函数之一 - 在这个例子中GetWindowText或GetDlgItemText” - 极具争议性的建议:例如,在版本6 Spy ++之后,它的作者甚至将GetWindowText替换为SendMessage(WM_GETTEXT)。 .. – kero

+0

引用? GetWindowText只是在同一进程中为线程发送WM_GETTEXT,没有有效的区别。跨进程更好,因为如果目标进程没有响应,而它自己发送消息则不会挂起。 –

+1

请引用:“将指定窗口的标题栏(如果有的话)的文本复制到缓冲区中,如果指定的窗口是控件,则复制该控件的文本,但GetWindowText无法检索指定窗口的文本控制另一个应用程序“。 (GetWindowText,MSDN) – kero