我试图读取一个非托pipe应用程序中的控制线。 我一直在使用ManagedWinapi来包装pinvokes,而且大多数情况下它已经到达了我需要的位置。 我可以find控制(这是一个ProBrowser类,不知道具体是什么)和查看属性,但我所需要的信息都不可用。 相反,ProBrowser有九个子元素,所有文本框具有匹配的属性: Password: false, MultiLine: false
和Text: <blank>
。 我假设这些是列标题,但没有太多要去。 这是我能够得到的尽可能低的链条,我似乎没有访问列表的实际内容。
SystemWindow list = new SystemWindow(ptr); // latching onto the ProBrowser SystemWindow[] pieces = list.AllDescendantWindows; // same results if using .AllChildWindows foreach (SystemWindow y in pieces) { ManagedWinapi.Windows.Contents.TextContent tc = (ManagedWinapi.Windows.Contents.TextContent)y.Content; // ListContent returns null here and on the parent control Console.WriteLine(tc.LongDescription); Console.WriteLine(tc.ComponentType); foreach (KeyValuePair<string, string> kvp in tc.PropertyList) { Console.WriteLine("\t" + kvp.Key + ", " + kvp.Value); } Console.WriteLine("\tText: " + GetText(y.HWnd)); }
GetText
只是GetWindowText
的包装器。 它为button等其他控件返回文本就好,但它不会从ProBrowser中提取任何内容。
现在我卡住了。 我不知道如何从列表中获取数据,因为它似乎没有出现在任何可以访问的地方。 如果有任何帮助,我已经包含了有问题的窗口的屏幕截图。
使用QTP Quick Test Professional版本10,您可以获取probrowser对象中的值。 您应该使用<probrowser Object Reference>.GetVisibleText.
我们在自动化脚本中使用相同的。