IE7用のActive Xプラグインを作成しました。これは他のいくつかの必要なインターフェイス(IOleClientはありません)に加えてIObjectWithSiteを実装しています。このインターフェイスは、IE7によって照会および呼び出されます。IE Mobile上でIPIEHTMLDocument2インターフェイスを取得するには
IUnknown *site = pUnkSite; /* retrieved from IE7 during SetSite() call */
IServiceProvider *sp = NULL;
IHTMLWindow2 *win = NULL;
IHTMLDocument2 *doc = NULL;
if(site) {
site->QueryInterface(IID_IServiceProvider, (void **)&sp);
if(sp) {
sp->QueryService(IID_IHTMLWindow2, IID_IHTMLWindow2, (void **)&win);
if(win) {
win->get_document(&doc);
}
}
}
if(doc) {
/* found */
}
私はしかし、次のコードを使用して、同様PIEに似たアプローチを試してみました:SetSite()私は、次のアプローチを使用してIHTMLDocument2インターフェイスを取得するために使用することができますIE7のサイトインターフェイスへのポインタを取得し、通話中にでもIPIEHTMLWindow2インタフェースを取得したので、私はこだわっていることはできません。
IUnknown *site = pUnkSite; /* retrieved from PIE during SetSite() call */
IPIEHTMLWindow2 *win = NULL;
IPIEHTMLDocument1 *tmp = NULL;
IPIEHTMLDocument2 *doc = NULL;
if(site) {
site->QueryInterface(__uuidof(*win), (void **)&win);
if(win) { /* never the case */
win->get_document(&tmp);
if(tmp) {
tmp->QueryInterface(__uuidof(*doc), (void **)&doc);
}
}
}
if(doc) {
/* found */
}
のいずれかに動作しませんIServiceProviderインターフェイスを使用するので、私はすでにこれをテストしました。
アイデア?