UI自动化,如何获取底层GUI对象?

时间:2012-02-23 07:35:11

标签: c# automation ui-automation

我正在使用UI自动化(COM包装器)框架进行大多数测试,但是我已经找到了一个控件,我看不到内部控件,我根本不想做Click(60,100)。< / p>

我想知道是否有一种简单的方法可以让对象成为自我,

我想使用像Control.FromHandle()这样的东西,但由于我的应用程序与测试不在同一个PID中,因此返回null。

我想我可能不得不使用注射,但我不知道我是否可以将GUI对象传回我的主线程(来自注入的一个)

我认为控件是ListBar(来自infragistics),如果有帮助的话。

任何建议都将不胜感激

1 个答案:

答案 0 :(得分:1)

就像Brendan所说,你可以得到处理(HWND / IntPtr)然后使用Win32SDK的所有优点。

我自己有几个场景,其中e。 G。某些工具栏不会通过UIAutomation暴露他们的孩子,但是通过(复杂的)SDK调用,你仍然可以获得它们。

请注意,最简单 - 也很漂亮(尽管不是100%可靠)解决方案是使用相对于父控件的屏幕坐标。通常,孩子们不会改变他们的位置,所以一切都运行良好99.99%。

稍微不那么可靠,快得多(运行时有点,开发时间很多)。