Form 上有三个 TEdit 为何我用这段代码只能得到第三个TEdit的文本?function EnumUserProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='TEdit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
Result:=False;
end;
end;procedure getuser;
var
hwnd: Integer;
buffer: array[0..255] of char;
begin
hwnd := FindWindow(nil,'test');
if hwnd<>0 then
begin
EnumChildWindows(hwnd,@EnumuserProc,Integer(@buffer[0]));
mainfrm.Memo1.Lines.Add(buffer);
end;
end;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='TEdit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
Result:=False;
end;
end;procedure getuser;
var
hwnd: Integer;
buffer: array[0..255] of char;
begin
hwnd := FindWindow(nil,'test');
if hwnd<>0 then
begin
EnumChildWindows(hwnd,@EnumuserProc,Integer(@buffer[0]));
mainfrm.Memo1.Lines.Add(buffer);
end;
end;
function EnumUserProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='TEdit' then
begin
SendMessage(hwnd,WM_GETTEXT,integer(buffer),255);
mainfrm.Memo1.Lines.Add(string(buffer));
Result:=False;
end;
end;procedure getuser;
var
hwnd: Integer;
begin
hwnd := FindWindow(nil,'test');
if hwnd<>0 then
EnumChildWindows(hwnd,@EnumuserProc,0);
end;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='TEdit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
mainfrm.Memo1.Lines.Add(PChar(lparam)); // 加上
// Result:=False; // 去掉
end;
end;