Visual Studio 2005の、Windows Control Libraryプロジェクトで作成致します、UserControlでの話です。
一日掛けて試行錯誤しました所、次の方法で落ち着きました:
IOleClientSite pClientSite = (IOleClientSite)Site.GetService(new AntiMoniker().GetType());
[ComImport(), Guid("00000305-0000-0000-C000-000000000046")]
class AntiMoniker {
}
ポイントはnew AntiMoniker()の部分で、System.__ComObjectをインスタンス化しているという点です。かなり姑息な方法ですが… 他に良策を思いつきません。
必ずしもAntiMonikerである必要は無いと思います。
然しながら、何とかMoniker系は歴代Windowsでも問題なく使えそうなクラスだと思いましたので、AntiMoniker辺りを選びました。
また、AntiMonikerの中身は省いています(メソッド・プロパティは今回使いませんので)。
---
本件で参考にしたポストです:
How to use IOleClientSite in C#?
http://www.eggheadcafe.com/software/aspnet/33997199/how-to-use-ioleclientsite-in-c.aspx
How to cast a control to IOleObject
http://stackoverflow.com/questions/1216760/how-to-cast-a-control-to-ioleobject
0 件のコメント:
コメントを投稿