3

私は C# ウィンドウのアプリケーションを継承しましたが、それはあまり好きではありません。締め切りが迫っていて、私の変更の一部が既存の機能に悪影響を及ぼしているのではないかと死ぬほど怖いです。

私は RoR の愛好家としてのバックグラウンドを持っており、そのフレームワークで (RSpec と Cucumber の両方を使用して) テストすることにかなり慣れています。

私は、定期的に実行できるテスト スクリプトが大好きで、この特定のプロジェクトのためにそれらの開発に個人的な時間を費やしたいと思っています。Ruby を使用したスクリプト化された GUI テストに関する本を PragProg.com から購入しました ( http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby )。これまでのところ、私は自分が見ているものを掘り下げており、これはうまくいくはずだと思います.

残念ながら、私は Windows アプリの開発に関して根本的な理解が不足しています。アプリケーションでサブコントロールの取得を「試行」するために、(Win32API 経由で) FindWindowExを呼び出しています。

私の混乱の大部分は、キャプチャしようとしているコントロールのクラス名を取得する方法です。本文中の例は次のとおりです。

    edit = find_window_ex.call @main_window, 0, 'ATL:00434310', nil

@main_window はアプリケーションのメイン ウィンドウ ハンドルで、'ATL:...' はテキスト ボックス領域のクラスです。著者がどのようにして「ATL:...」にたどり着いたかについての説明はありません。

MS の SPY++ に関する非常に古い記事を読んだことがありますが、それらは時代遅れのようです (または、vs2010 をインストールしたときに何らかの理由でインストールされていませんでした)。

では、findWindowEx 呼び出しで使用するコントロール クラスを見つける最良の方法は何ですか? 私はソース コードを持っています。そこからプルする必要がありますか? ソース コードがなく、アプリケーションを自動化したい場合はどうすればよいですか? 実行中のアプリケーションで何らかの方法でコントロールを「ブラウズ」できるユーティリティはありますか?

長々とすみません - 助けてくれてありがとう!ボブ

4

1 に答える 1

0

コンポーネントをインストールして Spy++ を取得するのが最善の方法です。これは、私が知っている実際のクラス名 esp を取得するための最良の方法です。元のコントロールのソースがない場合は、ライブラリまたは Microsoft が出荷する標準の ActiveX コントロールからのものである可能性があります。

ATL クラス名は、おそらくMicrosoft Active Template Library (ATL) を使用して開発されたコントロール用です。これは、C++ での ActiveX コントロールや COM オブジェクトなどの開発を大幅に簡素化する C++ テンプレート ライブラリです。

于 2010-07-11T17:35:47.447 に答える