В настоящее время я пишу некоторые Perl-скрипты для тестирования одного из наших приложений с графическим интерфейсом.Я использую 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);
}
Ни текст, ни текст не содержат никакого значения, даже если в элементе управления сеткой есть данные.Я пробовал несколько различных опций для GetWindowLong, но, похоже, ничего не возвращает ничего о содержимом сетки.Кроме того, окна, которые я сканирую, не имеют детей.Я застрял.
К сожалению, у меня нет доступа к коду или среде разработки для создания приложения.Я могу использовать только то, что WinSpy ++ говорит мне о компонентах окна.