从窗口句柄获取自定义.NET类的组件类型

我需要查看组件类型,即所编程的类的名称,以及另一个进程中单击的控件的名称。 我需要这种类型,以便对点击的控件作出反应,然后执行一些自动化任务。 现在我正在做以下工作:1.我从Win32的FindWindow()找到进程的主窗口句柄。 2.然后,我从Win32中调用EnumChildWindows(),并获取主窗口句柄的所有子项的窗口句柄。 3.现在变得棘手。 当我调用GetClassName()时,它会返回WindowsForms10.STATIC.app [...],因为我试图读取的控件是自定义的。

如何使用EnumChildWindows()中的窗口句柄获取单击的控件的类型? 我正在努力做甚么? 我一直在研究从Win32使用SendMessage()到流程,但似乎没有系统定义的消息可以帮助。


恐怕这是不可能的。 句柄只是指Windows需要的窗口的内部数据。 没有可用的信息。

你可以得到课程名称,但它既不标准也不唯一。 大部分不是基本功能控件(如按钮,列表等)的控件都是从一个非常原始的控件派生而来的,即“静态”。 但是,又没有关于可用的高级别WinForms控件的信息。

这导致了这样一个事实,即使你知道这个类型,你也不能仅仅投射指针/句柄,因为它后面没有数据。

你能以某种方式重述你的问题吗? 也许使用远程过程调用? 没有高级别的WinForms对象,它是否工作? 诸如使用普通的Win32 API单击,移动或重命名工作。

链接地址: http://www.djcxy.com/p/38839.html

上一篇: Get component type of custom .NET class from window handle

下一篇: Find (and kill) process locking port 3000 on Mac