枚举窗口内的所有控件

时间:2014-09-29 14:52:19

标签: c# winapi user32 spy++

我正在尝试使用user32.dll枚举窗口内的所有控件,但我不确切知道我需要做什么。

我正在使用EnumWindowsEnumChildWindows,但它不会检索窗口内的所有控件。

我想在Delphi应用程序中获取一些标签的文本。

我尝试过使用Spy ++,但它也没有列出。

2 个答案:

答案 0 :(得分:0)

    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是父窗口句柄

答案 1 :(得分:0)

Delphi标签是非窗口的。这意味着你不能希望获得它们的窗口句柄,因为它们不是窗口。

如果Delphi VCL正确支持自动化,那么您就可以使用UI Automation来检查这些控件的文本。但是VCL只支持基础Win32控件的自动化。由于标签不是窗口控制,再次你运气不好。

唯一真正希望阅读本文的是流程中的Delphi代码。听起来好像对你来说是可行的。