我目前正在编写一些 perl 脚本来测试我们的一个 GUI 应用程序。我使用 perl 的 Win32::GuiTest 作为基础,它在大多数情况下都非常实用。但是,我现在被困在试图从网格控件中获取数据(不确定小部件的实际名称是什么,因为这应该是黑盒测试)。使用 WinSpy++,我可以看到它的类是“AfxWnd42s”,不管这意味着什么。我可以使用以下代码获取窗口句柄:
#
# check that listed ports match the spec for this model
#
my @portgrids = FindWindowLike($win,undef,"AfxWnd42s");
if(not @portgrids){ die "can't find port grid"; }
for(@portgrids){
my $styles = GetWindowLong($_,Win32::GuiTest::GWL_STYLE());
my $text = WMGetText($_);
$wintext = GetWindowText($_);
printf("static w=%x, s=$wintext, style=%x text=<<$text>>\n",$_,$styles);
}
text 和 wintext 都不包含任何值,即使网格控件中有数据。我已经尝试了许多不同的 GetWindowLong 选项,但似乎没有任何关于网格内容的返回。另外,我正在扫描的窗口没有孩子。我被困住了。
不幸的是,我无权访问代码或开发环境来构建应用程序。我只能通过 WinSpy++ 告诉我的有关窗口组件的内容。