Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 枚举窗口中的所有控件_C#_Winapi_User32_Spy++ - Fatal编程技术网

C# 枚举窗口中的所有控件

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

我试图使用user32.dll枚举窗口中的所有控件,但我不知道我需要做什么

我使用的是EnumWindows和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代码。这听起来好像对你来说不可行

我正在做类似的事情,但并没有检索表单中的所有控件。@Alexandre Vicenzi:你确定这些控件真的是windows吗?我想这是组件。我用C语言制作了一个小应用程序,它工作正常。我认为,这可能是因为应用程序不是Win32或Win64。它可能是WPF应用程序,因为instanceDelphi使用自定义控件,以至于EnumChildWindows无法工作。不幸的是,我不知道你是否有解决办法。