⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptengine.cpp

📁 ASP切分器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*																	*/
/* Function name : OnStateChange									*/
/* Description   : Scripting engine has changed states.				*/
/*																	*/
/********************************************************************/
void CScriptEngine::OnStateChange(SCRIPTSTATE ssScriptState)
{
	switch(ssScriptState) 
	{
		case SCRIPTSTATE_UNINITIALIZED:
			TRACE0("State -> Uninitialized\n");
			break;
		case SCRIPTSTATE_INITIALIZED:
			TRACE0("State -> Initialized\n");
			break;
		case SCRIPTSTATE_STARTED:
			TRACE0("State -> Started\n");
			break;
		case SCRIPTSTATE_CONNECTED:
			TRACE0("State -> Connected\n");
			break;
		case SCRIPTSTATE_DISCONNECTED:
			TRACE0("State -> Disonnected\n");
			break;
		case SCRIPTSTATE_CLOSED:
			TRACE0("State -> Closed\n");
			break;
		default:
			TRACE0("State -> Invalid\n");
			break;
	}
}


/********************************************************************/
/*																	*/
/* Function name : OnScriptError									*/
/* Description   : An execution error occurred while the engine was	*/
/*				   running the script.								*/
/*																	*/
/********************************************************************/
void CScriptEngine::OnScriptError(IActiveScriptError* pActiveScriptError)
{
	DWORD dwSourceContext = 0;
	ULONG nLineNumber = 0;
	LONG  nCharPosition = 0;

	// get source line info
	HRESULT hResult = pActiveScriptError->GetSourcePosition(&dwSourceContext,
														&nLineNumber,
														&nCharPosition);
	if(SUCCEEDED(hResult))
	{
		// get the source line
		BSTR bstrSourceLine = NULL;
		hResult = pActiveScriptError->GetSourceLineText(&bstrSourceLine);

		// get the exception info
		EXCEPINFO excepinfo;
		memset(&excepinfo, 0, sizeof(excepinfo));
		
		hResult = pActiveScriptError->GetExceptionInfo(&excepinfo);
		ASSERT(SUCCEEDED(hResult));

		// format error message
		CString strMsg;
		strMsg.Format("Script error detected at line %d.", nLineNumber);

		if (bstrSourceLine != NULL) 
		{
			strMsg += "\nSource line: ";
			strMsg += bstrSourceLine;
			::SysFreeString(bstrSourceLine);
		}

		if (excepinfo.bstrDescription != NULL) 
		{
			strMsg += "\nDescription: ";
			strMsg += excepinfo.bstrDescription;
		}
		// issue error message
		AfxMessageBox(strMsg, MB_OK | MB_ICONEXCLAMATION);
	}

	// script failed
	m_hrScriptError = E_FAIL;
}


/********************************************************************/
/*																	*/
/* Function name : OnEnterScript									*/
/* Description   : Engine has begun executing the script code.		*/
/*																	*/
/********************************************************************/
void CScriptEngine::OnEnterScript()
{
}


/********************************************************************/
/*																	*/
/* Function name : OnLeaveScript									*/
/* Description   : Engine has returned from executing script code.	*/
/*																	*/
/********************************************************************/
void CScriptEngine::OnLeaveScript()
{
}


/********************************************************************/
/*																	*/
/* Function name : CleanUp											*/
/* Description   : Clean up											*/
/*																	*/
/********************************************************************/
void CScriptEngine::CleanUp()
{
	if (m_pActiveScriptParse)
    {
        m_pActiveScriptParse->Release();
        m_pActiveScriptParse = NULL;
    }
  
    if (m_pActiveScript)
    {
        m_pActiveScript->Close();
        m_pActiveScript->Release();
        m_pActiveScript = NULL;
    }
}

/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::AddRef						*/
/* Description   :													*/
/*																	*/
/********************************************************************/
STDMETHODIMP_(ULONG) CScriptEngine::XActiveScriptSite::AddRef()
{
	METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)

	ULONG nResult = (ULONG)pThis->ExternalAddRef();
	return nResult;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::Release						*/
/* Description   :													*/
/*																	*/
/********************************************************************/
STDMETHODIMP_(ULONG) CScriptEngine::XActiveScriptSite::Release()
{
	METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)

	ULONG nResult = (ULONG)pThis->ExternalRelease();
	return nResult;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::QueryInterface				*/
/* Description   :													*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::QueryInterface(REFIID iid, LPVOID* ppvObj)
{
	METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)

	HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
	return hr;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::GetLCID						*/
/* Description   : Retrieves the locale identifier associated with	*/
/*				   the host's user interface.						*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetLCID(LCID* pLCID)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	HRESULT hr = pThis->OnGetLCID(pLCID);
	return hr;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::GetItemInfo					*/
/* Description   : Allows the scripting engine to obtain			*/
/*				   information about an item added with the			*/
/*				   IActiveScript::AddNamedItem method.				*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetItemInfo(LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppTypeInfo)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	HRESULT hr = pThis->OnGetItemInfo(pstrName, dwReturnMask, ppunkItem, ppTypeInfo);
	return hr;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::GetDocVersionString			*/
/* Description   : Retrieves a host-defined string that uniquely	*/
/*				   identifies the current document version.			*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetDocVersionString(BSTR* pbstrVersionString)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	*pbstrVersionString = pThis->OnGetDocVersionString();
	return S_OK;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::OnScriptTerminate				*/
/* Description   : The script has completed execution.				*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnScriptTerminate(const VARIANT* pVarResult, const EXCEPINFO* pExcepInfo)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	pThis->OnScriptTerminate(pVarResult, pExcepInfo);
	return S_OK;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::OnStateChange					*/
/* Description   : Scripting engine has changed states.				*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnStateChange(SCRIPTSTATE ssScriptState)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	pThis->OnStateChange(ssScriptState);
	return S_OK;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::OnScriptError					*/
/* Description   : An execution error occurred while the engine was	*/
/*				   running the script.								*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnScriptError(IActiveScriptError *pActiveScriptError)
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	pThis->OnScriptError(pActiveScriptError);
	return S_OK;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::OnEnterScript					*/
/* Description   : Engine has begun executing the script code.		*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnEnterScript()
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
	
	pThis->OnEnterScript();
	return S_OK;
}


/********************************************************************/
/*																	*/
/* Function name : XActiveScriptSite::OnLeaveScript					*/
/* Description   : Engine has returned from executing script code.	*/
/*																	*/
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnLeaveScript()
{
	METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)

	pThis->OnLeaveScript();
	return S_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -