0
根据此线程:Can the HWND from CreateWindow/CreateDialog be GetMessage'd from another thread?,似乎我不能在另一个线程中使用GetMessage使用主线程的HWND。Win32 - GetMessage从另一个线程
我只是试图使用从新线程调用的GetMessage获取edittext内的值。有什么办法可以做到这一点?
根据此线程:Can the HWND from CreateWindow/CreateDialog be GetMessage'd from another thread?,似乎我不能在另一个线程中使用GetMessage使用主线程的HWND。Win32 - GetMessage从另一个线程
我只是试图使用从新线程调用的GetMessage获取edittext内的值。有什么办法可以做到这一点?
如果您想要从编辑控件中获取值,则根本不使用GetMessage
。 GetMessage
是为收到消息,但要从窗口中获得文本,你必须发送它是一个消息 - 即你使用SendMessage
。
要发送的消息是WM_GETTEXT
(前面有WM_GETTEXTLENGTH
)。或者更容易,使用操作系统为您提供的包装函数之一 - 在本例中为GetWindowText
或GetDlgItemText
。他们跨线程边界工作很好(甚至跨越进程边界)。
“或者更容易一点,使用操作系统提供给你的包装函数之一 - 在这个例子中GetWindowText或GetDlgItemText” - 极具争议性的建议:例如,在版本6 Spy ++之后,它的作者甚至将GetWindowText替换为SendMessage(WM_GETTEXT)。 .. – kero
引用? GetWindowText只是在同一进程中为线程发送WM_GETTEXT,没有有效的区别。跨进程更好,因为如果目标进程没有响应,而它自己发送消息则不会挂起。 –
请引用:“将指定窗口的标题栏(如果有的话)的文本复制到缓冲区中,如果指定的窗口是控件,则复制该控件的文本,但GetWindowText无法检索指定窗口的文本控制另一个应用程序“。 (GetWindowText,MSDN) – kero