C# 枚举窗口中的所有控件
我试图使用user32.dll枚举窗口中的所有控件,但我不知道我需要做什么 我使用的是EnumWindows和EnumChildWindows,但它无法检索窗口中的所有控件 我想在Delphi应用程序中获取一些标签的文本 我尝试使用Spy++,但它没有列出太多C# 枚举窗口中的所有控件,c#,winapi,user32,spy++,C#,Winapi,User32,Spy++,我试图使用user32.dll枚举窗口中的所有控件,但我不知道我需要做什么 我使用的是EnumWindows和EnumChildWindows,但它无法检索窗口中的所有控件 我想在Delphi应用程序中获取一些标签的文本 我尝试使用Spy++,但它没有列出太多 IList<IntPtr> childern = new List<IntPtr>(); WNDENUMPROC enumChildProc = delegate(IntPtr hwnd, IntP
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代码。这听起来好像对你来说不可行 我正在做类似的事情,但并没有检索表单中的所有控件。@Alexandre Vicenzi:你确定这些控件真的是windows吗?我想这是组件。我用C语言制作了一个小应用程序,它工作正常。我认为,这可能是因为应用程序不是Win32或Win64。它可能是WPF应用程序,因为instanceDelphi使用自定义控件,以至于EnumChildWindows无法工作。不幸的是,我不知道你是否有解决办法。