いつもお世話になっております、macです。
以前Excelについて質問しました。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200512/05120046.txt
VC++からExcelを起動して、データを保存するシステムを作成していますが、
Excelを終了しても、プロセスが残ってしまいます。
そこで、ウェブで調べてみたところ、
COMのオブジェクトを消すために、以下の処理を行わなくてはならない
とのことでした。
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
VC++の場合、このReleaseComObjectはどこから取得できるのでしょうか?
開発環境 WindowsXP VC++ 6.0 Excel2000
VC++ 6.0 なら、その記述は気にしなくてもいいです。
ReleaseComObject は .NET Framework を使う場合に必要ですが、VC++ 6.0 では .NET
アプリケーションは作れません。
シャノン様、回答ありがとうございます。
とすると、使用した全てのオブジェクトに対して
ReleaseDispatch
を呼んであげればよい、
ということでしょうか?
MFC については詳しくないので、どなたか他の方にバトンタッチ。
私もずいぶん昔ですが、VC6で書いたことがあります。
確か、CoUninitialize()でリリースされるのではなかったかと。
ちなみに、COMの初期化のため、最初にCoInitialize()する必要もあります。
詳しくは、以前、私がまとめた、下のページを参照ください。
http://homepage1.nifty.com/macbs/program.htm