2

私は現在、GUI アプリケーションの 1 つをテストするためにいくつかの 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);
}

グリッド コントロールにデータがあっても、text にも wintext にも値は含まれません。GetWindowLong に対してさまざまなオプションを試しましたが、グリッドの内容について何も返されないようです。また、スキャンしているウィンドウには子がありません。私は立ち往生しています。

残念ながら、アプリケーションをビルドするためのコードや開発環境にアクセスできません。WinSpy++ がウィンドウ コンポーネントについて教えてくれることしか理解できません。

4

0 に答える 0