unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); end;
var Form1: TForm1;
implementation
{$R *.dfm}
{这应该使用递归函数} 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;
end.
|
请发表评论