Использование Win32 :: GuiTest для получения данных из элемента управления отображением сетки (AfxWnd42s) - PullRequest
2 голосов
/ 06 апреля 2011

В настоящее время я пишу некоторые 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 ++ говорит мне о компонентах окна.

...