取得窗口中带有句柄的控件 var hMain,hChild:HWND; buffer:array[1..200] of char; begin hMain:=FindWindow(nil,'Form1'); hChild:=FindWindowEx(hMain,0,nil,nil); while hChild>0 do begin GetWIndowText(hChild,@buffer,200); ListBox1.Items.Add(StrPas(@Buffer)); hChild:=FindWindowEx(hMain,hChild,nil,nil); end; end;还可以用 EnumChildWindows 得到有句柄的控件
只获得Editvar hMain:HWND; hChild:HWND; buffer:array[0..255] of char; begin hMain:=FindWindow(nil,'Form1'); hChild:=FindWindowEx(hMain,0,nil,nil); while hChild>0 do begin GetClassName(hChild, buffer, 256); if StrPas(Buffer) = 'TEdit' then //子窗体类名为TEdit ListBox1.Items.Add(StrPas(@Buffer)); hChild:=FindWindowEx(hMain,hChild,nil,nil); end; end;
除了鸟兄的办法,还有一种: 用ChildWindowFromPointEx也可以得到! hParent是窗体句柄 Point(x, y) 是控件的大约位置 CWP_ALL表示所有控件,也可以制定只取某类控件 函数返回值为控件句柄。 ChildWindowFromPointEx(hParent, Point(x, y) , CWP_ALL);下面是一个获取别的程序edit的内容的例子 procedure TForm1.Button1Click(Sender: TObject); var hParent, hEdit: HWND; u: pchar; begin try hParent := FindWindow(nil, 'fromB的标题'); if hParent = 0 then showmessage('窗口没有找到!') else begin hEdit := ChildWindowFromPointEx(hParent, Point(10, 10) //大约位置 , CWP_ALL); if hEdit = 0 then showmessage('Edit没有找到!') else begin//找到控件 { 添加你自己的处理代码 } end; end; except end; end;
var
hMain,hChild:HWND;
buffer:array[1..200] of char;
begin
hMain:=FindWindow(nil,'Form1');
hChild:=FindWindowEx(hMain,0,nil,nil);
while hChild>0 do
begin
GetWIndowText(hChild,@buffer,200);
ListBox1.Items.Add(StrPas(@Buffer));
hChild:=FindWindowEx(hMain,hChild,nil,nil);
end;
end;还可以用 EnumChildWindows 得到有句柄的控件
hMain:HWND;
hChild:HWND;
buffer:array[0..255] of char;
begin
hMain:=FindWindow(nil,'Form1');
hChild:=FindWindowEx(hMain,0,nil,nil);
while hChild>0 do
begin
GetClassName(hChild, buffer, 256);
if StrPas(Buffer) = 'TEdit' then //子窗体类名为TEdit
ListBox1.Items.Add(StrPas(@Buffer));
hChild:=FindWindowEx(hMain,hChild,nil,nil);
end;
end;
用ChildWindowFromPointEx也可以得到!
hParent是窗体句柄
Point(x, y) 是控件的大约位置
CWP_ALL表示所有控件,也可以制定只取某类控件
函数返回值为控件句柄。
ChildWindowFromPointEx(hParent, Point(x, y) , CWP_ALL);下面是一个获取别的程序edit的内容的例子
procedure TForm1.Button1Click(Sender: TObject);
var
hParent, hEdit: HWND;
u: pchar;
begin
try
hParent := FindWindow(nil, 'fromB的标题');
if hParent = 0 then
showmessage('窗口没有找到!')
else
begin
hEdit := ChildWindowFromPointEx(hParent, Point(10, 10) //大约位置
, CWP_ALL);
if hEdit = 0 then
showmessage('Edit没有找到!')
else
begin//找到控件
{
添加你自己的处理代码
}
end;
end;
except
end;
end;