2011-04-27 113 views
0
Var 
PText : array[0..512] of Char; 
Handle, Child : HWND; 
begin 
FillChar(PText,512,0); 
Handle := FindWindow('Notepad',nil); 
Child := FindWindowEx(Handle,0,'Edit',nil); 

Caption := IntToStr(Handle)+' - '+IntToStr(Child); 

SendMessage(Child,WM_GETTEXT,512,Integer(@PText[0])); 

ShowMessage(PText); 

end; 

我只是想知道 - 我通常應該設置大小(目前512),以什麼時候使用WM_GETTEXT?我猜這不同於源代碼控制中有多少文本?使用WM_GETTEXT - 要設置大小?

當處理相當大量的文本時,您建議如何設置它?

有沒有辦法做到這一點(從句柄獲取文本),而不必設置大小等?

回答

7

您應該使用WM_GETTEXTLENGTH來讀取大小,並使用緩衝區的值。

+0

謝謝!我應該想到這一點!我應該加1嗎?我相信我看到有人這樣做 – Jeff 2011-04-27 18:57:08

+0

MSDN爲WM_GETTEXTLENGTH聲明:返回值是字符中文本的長度,不包括終止空字符。 對於WM_GETTEXT MSDN指出:要複製的最大字符數,包括終止空字符。 所以是的,你應該加上1. – Remko 2011-04-27 19:11:35

+0

@Jeff:如果是你的問題的答案,你可以接受答案;-) – 2011-04-27 19:17:23