非常に古いActiveXコンポーネントの一部のソースコードを失ってしまっていました。 Active Xコンポーネントを呼び出すDelphi7プログラムがあります。それはほとんどのビットとはあまり変更することはできません。ただし、Active Xコンポーネントの一部の機能を更新する必要があります。アプリケーションをC#に移行して以来、ActiveXをC#クラスライブラリとしてやり直すことに決めました。Delphiプログラムで使用する既存のCOMオブジェクトの新しいC#バージョンの作成
私は概念を証明するために働く基本的なC#クラスライブラリを持っています。私はGUIDとレジストリをハックすることができますので、古いものに似ています。古いものと新しいもののタイプlibを見ると、それらは基本的にと同じです。若干の違いはありますが、私が思っていた何も問題はありません。プログラムIDを調べて
レイトバインディング:
は今、私の知る限り、新しいクラスライブラリを使用するための3つの方法があります。これは正常に動作します。
タイプライブラリをインポートします。 (プロジェクト|インポートタイプライブラリ)これは問題ありません。
ActiveXコンポーネントとしてインポートします。これにより、tlbファイルが生成されます。これは機能しません。コンポーネントを作成すると、「いいえ、そのようなインターフェイスが存在します」というメッセージが表示されます。クラスはポイントにロードされていますが、完全にロードされていません。
残念ながら、Delphiプログラムではオプション3が使用されています。そのため、この状況でクラスライブラリを使用するようにしなければなりません。どのように私はそのエラーを過ぎてどのようなアイデアですか?私はグーグルで見つけて、いくつかの参考文献を見つけましたが、何が問題なのかはわかりません。
2番目の質問です。私は一度それをやったので、私はこれを行う方法を知っておくべきですが、私はそれを流したようでした。私がDelphiにいるとき、私はTLBファイルを生成するためにImport ActiveXコンポーネントを行います。これで、生成された最初のC#クラスライブラリがActiveXコントロールのリストに表示され、そのためのユニットを作成できます。しかし、私はtestignのためのもう一つの単純なクラスライブラリを作成して、私はライブラリをActiveXコントロールのリストに表示することができますので、私はそれをインポートすることはできません。
アクティブXコンポーネントの作成単位は、インポートタイプライブラリの形式と必要なActiveX形式と異なる形式のTLB.pasを生成します。
しかし、作成した最初の例は、私のActiveXコントロールの中に表示されます。しかし、私はそれがどのようにそこに現れたのか分かりません!そして、このためのtlbは元のtlbとほとんど同じです! –