다른 필수 인터페이스 (IOleClient는 사용하지 않음) 외에도 IObjectWithSite를 구현하는 IE7 용 Active X 플러그인을 작성했습니다. 이 인터페이스는 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 인터페이스를 사용하여, 그래서 나는 이미 테스트.
아이디어가 있으십니까?