1

サードパーティ アプリケーションでルックアップ フォームを操作するスクリプトを作成しようとしています。

フォームには、「電話番号」や「顧客 ID」などのフィールドに対応する多数のテキスト ボックスと、「ルックアップ」というタイトルのコマンド ボタンがあります。

コマンド ボタンをクリックすると、フォーム上の複数列のリスト ボックスに、指定された条件に一致するデータベース内のレコードが取り込まれます。次に、ユーザーは特定のレコードをダブルクリックする必要があります。これにより、問題のレコードを「調整」するためのオプションを含む新しいダイアログ ボックスが開きます。

私はこのフォームを作成していません。また、取得元のデータベースに直接アクセスすることもできません。フォームでは、ユーザーは一度に 1 つのレコードのみを調整できます。

スクリプトで、Excel シートから電話番号のリストを 1 つずつコピーし、フォームの正しいフィールドに貼り付けて、[検索] ボタンをクリックし、リストボックス内のレコードのフィールドの 1 つがあらかじめ決められた値と一致する場合は、調整ダイアログを開いてレコードを変更します。

FindWindow と FindWindowEx を使用して、テキストを貼り付けるフィールドのハンドルを取得し、SendMesage 関数を使用してフォームを操作するところまで行きました。

表示されるリストボックスからデータを読み取る方法に行き詰まっています。コピーや貼り付けには対応していないので、SendMessage や SendKeys は使えません。WinSpy++ を使用すると、リストボックスのクラスは "Afxwnd40" です。これは、オンライン ヘルプ フォーラムをざっと検索すると、テキストをコピーせずに直接 "ペイント" する従来のコントロールです。問題のウィンドウに送信されるデータを「フック」を使用してキャプチャすることについていくつか聞いたことがありますが、その設定方法がわかりません。私が自由に使える唯一のツールは、WinSpy++ と VBA での Windows API 呼び出しです。

4

1 に答える 1

0

これは非常に古い質問であることは知っていますが、Afx コントロールを自動化するソリューションを探していました。VBA でこれを確実に行う方法はまったくありません。したがって、適切な自動化ツールが必要です。

QTP/UFT はこれらのコントロールのテキストを取得するのに問題があり、OCR は最悪でした。しかし、Ranorex には、GDI レイヤーでオブジェクトから生のテキストを取得する機能があることがわかりました。

エレメント ブラウザーの Ranorex で、Afx コントロールを右クリックし、[Add to GDI capture] を選択します。そのオブジェクトに対する Ranorex の動作が大幅に向上することがわかります。

于 2016-02-19T00:32:13.730 に答える