我正在尝试使用 delphi 编程访问第三方应用程序的“文本框”,因此我需要使用 FindWindowEx(...) 函数找到每个“文本框”的句柄。
问题是,由于所有文本框都具有相同的类名和“无窗口名称”,这个函数只能给我第一个 TextBOx 句柄!
我怎样才能在没有名称的情况下获得其余的文本框句柄?
提前致谢。
最佳答案
可以使用EnumChildWindows
枚举第三方应用程序窗口的所有子窗口,并测试每个枚举窗口的类名,看是否是“文本框”类。例子:
function EnumChildren(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
const
TextBoxClass = 'EDIT'; (?)
var
ClassName: array[0..259] of Char;
begin
Result := True;
GetClassName(hwnd, ClassName, Length(ClassName));
if ClassName = TextBoxClass then
TStrings(lParam).Add(IntToHex(hwnd, 8));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
EnumChildWindows(OtherAppWnd, @EnumChildren, UINT_PTR(Memo1.Lines));
end;
关于delphi - 如何获取具有相同类名的不同控件的句柄?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10655133/