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