{这应该使用递归函数} procedure GetChildWindows(h: HWND); var buf: array[0..255] of Char; {这个缓冲区是获取类名用的, 如果不需要可以删除} begin h := GetWindow(h, GW_CHILD); {第一个子窗口} while h <> 0 do begin {下面两行是要执行的操作, 并假定只处理 TEdit} GetClassName(h, buf, Length(buf)); if buf = 'TEdit' then ShowMessageFmt('%s:%d', [buf, h]);
h := GetWindow(h, GW_HWNDNEXT); {下一个子窗口} GetChildWindows(h); {递归} end; end;
{测试} procedure TForm1.Button1Click(Sender: TObject); begin GetChildWindows(Handle); end;