1

COM を介して、Rational Rhapsody アプリケーションの実行中のインスタンスにアクセスしようとしています。C++/CLI COM 呼び出しを使用しようとしています。
C++ 呼び出しから:

rhapsody::RPApplication^ App = safe_cast<rhapsody::RPApplication^>( Marshal::GetActiveObject("Rhapsody.Application"));

COM Exception の原因: 800401E3 (操作は利用できません)

しかし、使用Marshal::GetActiveObject("Word.Application")すると問題なく動作します。を使用gcnew rhapsody::RPApplication()すると、C# で新しいインスタンスと同じコードを作成できます。

rhapsody.RPApplication App = (rhapsody.RPApplication) Marshal.GetActiveObject("Rhapsody.Application")

うまく動作します。C++/CLI から動作しない理由はありますか?

4

1 に答える 1

2

C++/CLI の main() ルーチンにフラグが付いてい[STAThread]ますか? 特に COM オブジェクトを扱う場合は、一般的に必要です。

[STAThread]
int main(array<System::String^>^args)
{
     // code here...
}
于 2010-02-18T21:59:32.513 に答える