我正在尝试使用枚举窗口内的所有控件user32.dll
,但我不知道我需要做什么。
我正在使用EnumWindows
and EnumChildWindows
,但它不会检索窗口内的所有控件。
我想在 Delphi 应用程序中获取一些标签的文本。
我尝试使用 Spy++,但它也没有列出。
IList<IntPtr> childern = new List<IntPtr>();
WNDENUMPROC enumChildProc = delegate(IntPtr hwnd, IntPtr param)
{
childern.Add(hwnd);
return true;
};
EnumChildWindows(Hwnd, enumChildProc, IntPtr.Zero);
return childern;
这Hwnd
是父窗口句柄
Delphi 标签是非窗口的。这意味着您永远不能希望为它们获取窗口句柄,因为它们不是窗口。
如果 Delphi VCL 正确支持自动化,那么您就可以使用 UI 自动化来检查这些控件的文本。但是 VCL 只支持通过底层 Win32 控件实现自动化。由于标签不是窗口控件,因此您再次不走运。
唯一可以真正希望阅读本文的是进程内部的Delphi代码。听起来这对你来说并不可行。