描述:
HRVERIFY(LoadTypeLib(L"testeng2.tlb", &ptLib), "LoadTypeLib");
ptLib->GetTypeInfoOfGuid(CLSID_Scripttry, &pScriptptr->m_pTypeInfo);
ptLib->Release();
HRVERIFY(pMyObject->QueryInterface(IID_IUnknown,
(void **)&pScriptptr->m_pUnkScriptObject), "IUnknown initialization");
HRVERIFY(CoCreateInstance(CLSID_VBScript, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveScript, (void **)&pAS),
"CoCreateInstance() for CLSID_VBScript");
HRVERIFY(pAS->QueryInterface(IID_IActiveScriptParse, (void **)&pASP),
"QueryInterface() for IID_IActiveScriptParse");
HRVERIFY(pAS->SetScriptSite((IActiveScriptSite *)pScriptptr),
"IActiveScript::SetScriptSite()");
HRVERIFY(pAS->AddNamedItem(L"MyObject", SCRIPTITEM_ISVISIBLE |
SCRIPTITEM_ISSOURCE), "IActiveScript::AddNamedItem()");
HRVERIFY(pASP->InitNew(), "IActiveScriptParse::InitNew()");
len=scriptdata->GetWindowText(szBuf,1024);
szBuf[len] = 0;
WCHAR wcBuf[1024];
memset(wcBuf, 0, sizeof(WCHAR)*1024);
MultiByteToWideChar(CP_ACP, 0, szBuf, strlen(szBuf), wcBuf, 1024);
BSTR code = ::SysAllocString(wcBuf);
EXCEPINFO ei;
HRVERIFY(pASP->ParseScriptText(code, L"MyObject", NULL, NULL, 0,
0, 0L, NULL, &ei), "ParseScriptText");
HRVERIFY(pAS->SetScriptState(SCRIPTSTATE_CONNECTED), "SetScriptState");
load=true;
上面是我使用脚本引擎的程序片断,现在问题是我加载脚本后,如果想修改脚本函数重新下载,程序不报错,但之前下载的脚本还在起作用,IActiveScriptParse接口又没有提供删除脚本的功能,是不是只有删除IActiveScript这个对象了
HRVERIFY(pAS->SetScriptState(SCRIPTSTATE_DISCONNECTED), "SetScriptState");
pASP->Release();
我试过先断开连接然后IActiveScriptParse release;也还是不行
如果只能通过删除IActiveScript对象,怎么删除才能删干净,主要三个对象IActiveScriptSite,IActiveScript IActiveScriptParse,IActiveScriptSite应该不用删除了,令两个对象都需要删除才行,大家帮帮忙。