Vb6 如何获取给定HWND的Visual Basic控件的名称?

Vb6 如何获取给定HWND的Visual Basic控件的名称?,vb6,automation,Vb6,Automation,我正在开发一个小的宏记录/重放工具,它可以自动化我们拥有的一些非常旧的VisualBasic6GUI。为此,我通过名称(即控件的name属性的值)来标识控件 此工具的一部分需要确定给定HWND的控件的名称。对于使用VB.NET完成的较新Visual Basic应用程序,我可以使用窗口消息。这很有效 但是,旧版windows无法理解此消息。对于Visual Basic 6应用程序的控件,是否有任何方法可以做到这一点?一个不需要在GUI过程中的解决方案是可取的,但是如果我有一个只在GUI过程中工作的

我正在开发一个小的宏记录/重放工具,它可以自动化我们拥有的一些非常旧的VisualBasic6GUI。为此,我通过名称(即控件的
name
属性的值)来标识控件

此工具的一部分需要确定给定HWND的控件的名称。对于使用VB.NET完成的较新Visual Basic应用程序,我可以使用窗口消息。这很有效

但是,旧版windows无法理解此消息。对于Visual Basic 6应用程序的控件,是否有任何方法可以做到这一点?一个不需要在GUI过程中的解决方案是可取的,但是如果我有一个只在GUI过程中工作的解决方案,那么这也是可以接受的(因为我可以自己进行注入)


更新:我刚刚尝试了一件事,这个中等程度的成功:我使用检查对象接口的实现,该接口显示给定的HWND。如果我得到一个实现(似乎许多[all?]Visual Basic控件实现了这个接口),我将使用该属性读取“可访问名称”。有时这确实会产生一个有用的字符串,但通常不会。我认为唯一的方法是进入进程内部并获取指向
表单
对象的指针,但我不知道如何从外部执行

您是否可以将对
WM_GETCONTROLNAME
的支持添加到那些较旧的应用程序中

或者,您可以通过其他一些本机可用的属性来识别控件


除此之外,正如Raymond所说,您可以修改vb6应用程序吗?如果是这样,在每个表单加载事件中,您可以迭代me.controls并使用
SetProp(ctrl.hwnd,“MYNAME:&ctrl.name,0)
api将名称添加到窗口自己的属性列表中,然后在其他应用程序中,您可以
EnumProps(ctrl\u hwnd)
查找以
MYNAME:
开头的值并解析出值。

这些都是godd建议,谢谢!现在看来,我真的需要连接到流程中(我可以做到),然后直接访问表单对象。我不知道如何做到这一点,但几个月前已经做了类似的事情,所以可能会成功。非常有创意的想法!但是-不,我不能修改应用程序。我相信我甚至连他们的源代码都没有。有人告诉我,有一种工具可以用来读取给定GUI的Visual Basic名称,显然,一些GUI测试工具也可以做到这一点,所以这一定是可能的。