最近、DLL で COM コクラス/インターフェイスを作成および実装するプロジェクトを継承しました。この COM DLL は、GUI を COM クラスのインターフェイスに適用するアプリケーションによって利用されます。これは、COM DLL を使用する唯一のアプリケーションです。私は COM を扱うのが初めてで、適切なドキュメントを見つけるのが難しいです。
私のタスクの一部には、インターフェイスにいくつかのメソッド/プロパティを追加する (および不要になったものを削除する) ことが含まれます。これを実現するには、IDL を変更する必要があることを知りました。現在、新しいメソッドとプロパティをインターフェイスの最後に追加しただけで、うまく機能しているようです。ただし、プロパティの 1 つを削除すると (たとえば)、アプリケーションを実行するとすぐに問題が発生します。
interface IMyComInterface : IDispatch
{
[id(1), helpstring("method CheckMessage")] HRESULT CheckMessage([in] VARIANT vMsg);
[id(2), helpstring("method CheckFolder")] HRESULT CheckFolder([in] VARIANT Folder, [out] VARIANT *pCount, [out, retval] VARIANT *pErrorCount);
//[propget, id(3), helpstring("property Flags")] HRESULT Flags([out, retval] VARIANT *pVal);
//[propput, id(3), helpstring("property Flags")] HRESULT Flags([in] VARIANT newVal);
[propget, id(4), helpstring("property MessageStore")] HRESULT MessageStore([out, retval] VARIANT *pVal);
[propput, id(4), helpstring("property MessageStore")] HRESULT MessageStore([in] VARIANT newVal);
[propget, id(5), helpstring("property Directory")] HRESULT Directory([out, retval] VARIANT *pVal);
[propput, id(5), helpstring("property Directory")] HRESULT Directory([in] VARIANT newVal);
}
私はそれが壊れたID番号シーケンスに関係していると推測しています. その下のすべてを上に移動できれば、うまくいくと思います。しかし、これらすべてを行うための適切な方法に興味があります。
どうもありがとう。