2011-01-12 13 views
1

Windows Mobile 5用の.NET CFアプリケーションを作成します。このアプリケーションでは、ProgID(またはCLSID)に基づいてCOMオブジェクトをロードします。スマートデバイスプロジェクトでCOMオブジェクトを読み込む方法は?

  1. このCOMオブジェクトを、別の.NETオブジェクトのようにそのメソッドにアクセスできるようにロードするにはどうすればよいですか?
  2. さらに、Visual Studioでプロジェクト/ソリューションを構成するには、アプリケーションをデバッグするときに、ロードされているCOMオブジェクトがデバイスにインストールされているものであることを確認してください。 1つはデバッガからアクセスできるかもしれませんか?

参考として.ocxファイルを追加しようとしましたが、エラーが発生しました。「質問2」についてはわかりません。

Type type = Type.GetTypeFromProgID("my.prog.id") 
MyObject myObject = (MyObject)Activator.CreateInstance(type) 

...を使用してCOMオブジェクトを読み込もうとしましたが、この結果、2行目にInvalidCastExceptionが発生します。


EDIT:レコードの:私は64ビット版のWindows 7マシンではなく、これは物事を複雑にするかどうかわからに取り組んでいます...

答えて

1

あなたは、ランタイム呼び出し可能ラッパー(RCW)が必要です。基本についてはthis MSDN articleを参照してください。 ActiveXコントロールなど、より複雑なものについては、this articleを参照してください。

+0

.tlbファイルへの参照を追加してRCWを作成しました。また、私はオブジェクトをインスタンス化することができるようです。ただし、そのオブジェクトのメソッドを呼び出すと、COMException(0x8000ffff)が発生します。私はCOMオブジェクト自体が別のアプリケーションから呼び出されたときにうまく動作するという事実を知っていますが、それはソースコードを持たないネイティブアプリケーションです。 – Daan

+0

おそらく私の質問に最も直接的な答えかもしれないので、私はこの答えを受け入れるでしょう。私が遭遇するCOMExceptionは、おそらく、COMコンポーネントを正しく使用しない(関数呼び出しの順序が間違っているなど)エラーが発生するためです。 – Daan

関連する問題