2012-02-21 3 views
3

UIオートメーションをサポートしていないサードパーティ製のコントロール用のUIオートメーションプロバイダを作成する方法はありますか?古いサードパーティのコントロールにUIオートメーションを使用する

問題:VsFlexGrid ActiveXコントロールでvb6アプリケーションを自動化しようとしましたが、そのプロパティとメソッドにアクセスできません。

はあなた

答えて

3

それはすべての状況で適切なpossible, but it's a lot of work、とはありませんありがとうございました。

主要な要件は、目標制御ということである。

  • は、好ましくは、よく知られており、安定したクラス名を持つ独自のHWND、

  • が通信の明確に定義された方法を有していますそのコントロールを別のプロセスから取得します。いくつかのウィンドウメッセージ(Win32の共通コントロールのような)を使用するコントロールは、このカテゴリに分類され、広範なインターフェイス(IHTMLDocument)を公開するMS Internet Explorerコントロールなどのコントロールも同様です。

しかし、コントロールが外部からの情報にアクセスするためのいくつかの方法を持っていない場合は、UIオートメーションはあまり役に立ちません:UIAが、ここでやっているすべては、あなたがその既存のフレームワークにアダプタクラスをスロットに許可されます。最初の場所にある基本情報を取得することに対処するための新しいツールや余分なツールを提供しているわけではありません。

古いVB時代のActiveXコントロールは難題です。フォーム上の1つのコントロールにアクセスできる場合は、さまざまなCOMインターフェイスを使用してそのフォーム上の他のコントロールに移動し、そのプロパティにアクセスできます。しかし、キャッチは、あなたが他のプロセスからこれを簡単に行うことができないということです。これらのActiveXコントロールは、クライアントコードがCOMインターフェイスを代わりに使用することを想定しているため、Windowsメッセージの種類をサポートするActiveXコントロールはほとんどありません。

+0

お返事ありがとうございます。それは私が物事を定位置に置くのを助けました。私が今理解しているように、行く方法はメッセージングまたはマーシャリングです。私はそれを把握して解決策をここに掲載します。 –