救命:关于IHTMLDocument2的问题,诸位大侠看看(200)

W

wylhf

Unregistered / Unconfirmed
GUEST, unregistred user!
我在编写的dll中调用IHTMLDocument2相关函数时,总是报: 'p->QueryInterface(GetIID(),(LPVOID*)(&INTF)',不支持此接口@d:/program files/borland/cbuilder6/include/vcl/utilcls.h/3065 press [Y]es to terminate,[N]o to continue and [c]ancel to Debug。这样的错误,不知道这是怎么回事?有没有解决的办法啊?小弟快急死了。源代码如下: int __stdcall ss() { int Result = -1;
VARIANT va;
va.vt=VT_I4;
TCppShellWindows *CppShellWindows1 = new TCppShellWindows(NULL);
try { long lCopies =CppShellWindows1->get_Count();
for ( long i = 0;
i < lCopies;
i++) { TVariantInParam va(i);
IWebBrowser2Ptr browser(CppShellWindows1->Item(va));
//蹦出错误就在这句 if (browser) { IDispatchPtr spDisp;
//IHTMLDocument2 *pHTMLDoc = NULL;
LPDISPATCH pDisp = NULL;
browser->get_Document(&pDisp);
VARIANT id, index,id1,index1;
IDispatch *spDispatch;
IHTMLDocument2 *pDoc2;
IHTMLElementCollection *pElementCol;
//IHTMLFormElement *pFormElement;
//IHTMLInputElement *pInputElement;
{ if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc2))) { if (SUCCEEDED(pDoc2->get_forms(&pElementCol))) { BSTR title;
pDoc2->get_title(&title) ;
AnsiString tempTile;
tempTile = AnsiString(title);
if(tempTile.Trim()=="xxx") { Result = 0;
/*WideString wstrlang="VbScript";
WideString wstrjs="importcwbb('"+DataStr.Trim()+"')";
VARIANT mOut;
IHTMLWindow2 *pWindow;
if(pDoc2->get_parentWindow(&pWindow) == S_OK) { pWindow->execScript(wstrjs.c_bstr(),wstrlang.c_bstr(),&mOut);
} */ } } } } if(pDoc2) pDoc2->Release();
} } }__finally{ if(CppShellWindows1!=NULL)delete CppShellWindows1;
} return Result;
}
 
W

wylhf

Unregistered / Unconfirmed
GUEST, unregistred user!
顶起,难道坛子里真没有高人了吗?
 
S

stlont

Unregistered / Unconfirmed
GUEST, unregistred user!
一般很多接口不支持的错误,是没有进行com初始化引起的,检查下是否有这方面的问题
 
W

wylhf

Unregistered / Unconfirmed
GUEST, unregistred user!
请问stlont大侠,怎么进行com初始化呀,请多赐教吧
 
S

stlont

Unregistered / Unconfirmed
GUEST, unregistred user!
我不在CB下用WB,delphi基本都是使用以下代码,可供参考initialization OleInitialize(nil);finalization OleUninitialize;
 
顶部