3

プロパティとその値のリストなど、サードパーティアプリケーションのコントロールに関する情報を取得したいのですが、RTTI情報のようなものですが、サードパーティのDelphiアプリケーション用です。

これは可能だと思います。たとえば、TestCompleteにはObjectSpyウィンドウがあり、RTTI情報など、コントロールに関する多くの有用な情報を提供できます。これはどのように行うことができますか?

ここに画像の説明を入力してください

編集:私がこの問題を調査している理由を説明するために...私はTestComplete / TestExecuteの登録ユーザーであり、私は好きです...そのほとんど。私は小さなことを乗り越えることができますが、私にとっての1つの大きな問題は、TestExecuteを実行できるように、ライセンスサーバーを実行するためだけに、物理コンピューター(仮想マシンではない)を常にオンにする必要があるライセンス検証システムです。夜。基本的なテストのニーズがあるので(スクリーンショットを比較し、基本的なDelphiコンポーネントのプロパティを確認します)、自分のプライベートな非常に単純な「TestExecuteのような」アプリケーションを作成するのはどれほど難しいのだろうかと思いました。

4

2 に答える 2

3

さらに進むために、SOでここにあるこれらの関連リソースをお勧めします


NtQueryInformationProcessを使用してプロセス情報を取得するというタイトルのこのc++プロジェクトをDelphiに移植することを強くお勧めします別のプロセスを起動するために使用されるコマンドラインReadProcessMemoryにアクセスするための実践的な経験。


最終編集:

于 2012-04-18T15:08:42.890 に答える
2

デバッグ情報を使用してコンパイルされた別のアプリケーションを実行時に取得したい場合、私たちが扱っているのは「独自のカスタムデバッガー/プロファイラー/自動テストカーネルの作成方法」の問題です。

TestCompleteおよびその他のAutomatedQAプログラムには、アプリを起動、実行、リモート制御し、これらの実行可能ファイルに添付されたTurboDebugger TD32情報など、いくつかの形式でデバッグ情報を解析できるデバッガーおよびプロファイラーカーネルが含まれています。また、プロファイリングカーネルは、作成時に各オブジェクトを確認し、RTTIのようなデバッグ情報を繰り返して、作成されたオブジェクトが特定のクラスタイプであるかどうかを判断し、そのオブジェクトに存在するプロパティを確認できます。

現在、TestCompleteは、AQTimeレベルのものに加えて、ウィンドウハンドルをイントロスペクトする機能、およびその背後にあるDelphiクラス名であるウィンドウハンドルからの直感を追加します。ただし、Delphiのどのバージョンがその特定の実行可能ファイルを作成したか、そのTPanelバージョンが何であるかを知るよりも、マウスがに属するウィンドウハンドル上にあることを通知できるプログラムを作成する方がはるかに簡単です。TPanel次に、どのプロパティが含まれるか、実行中のプログラムからそれらの値を読み戻すために、独自の「デバッガエンジン」を実装する必要があります。独自のデバッガーの作成を開始するために使用できるオープンソースアプリケーションを私は知りません。また、AQTime / TestComplete内にあるもの、またはDelphi自体内にあるものを使用することはできません。

これを行うためのサンプルプログラムを作成することはできませんでしたが、作成できたとしても、多くのサードパーティライブラリのサポートが必要になります。マウスが置かれているウィンドウハンドルのウィンドウクラスを確認するには、MSSpy++ユーティリティのようなものを実装する方法を探してください。

簡単なケースは、マウスが独自のアプリケーション内のウィンドウ上でマウスを動かしている場合です。これについては、RTTIを使用するだけのabout.comリンクを参照してください。

于 2012-04-13T18:08:10.380 に答える