2013-07-02 62 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