|
|
// Copyright (c) 1999 Microsoft Corporation. All rights reserved.
//
// Declaration of CAudioVBScriptEngine.
//
// CAudioVBScriptEngine is an ActiveX scripting engine that supports a carefully chosen subset of the VBScript language.
// It's goal in life is to be as small and fast as possible and to run on every platform that ports DirectMusic.
#pragma once
#include "activscp.h"
#include "engdisp.h"
const GUID CLSID_DirectMusicAudioVBScript = { 0x4ee17959, 0x931e, 0x49e4, { 0xa2, 0xc6, 0x97, 0x7e, 0xcf, 0x36, 0x28, 0xf3 } }; // {4EE17959-931E-49e4-A2C6-977ECF3628F3}
class CAudioVBScriptEngine : public IActiveScript, public IActiveScriptParse { public: static HRESULT CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv);
// IUnknown
STDMETHOD(QueryInterface)(const IID &iid, void **ppv); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)();
// IActiveScript
HRESULT STDMETHODCALLTYPE SetScriptSite( /* [in] */ IActiveScriptSite __RPC_FAR *pass); HRESULT STDMETHODCALLTYPE GetScriptSite( /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE SetScriptState( /* [in] */ SCRIPTSTATE ss) { return S_OK; } HRESULT STDMETHODCALLTYPE GetScriptState( /* [out] */ SCRIPTSTATE __RPC_FAR *pssState) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE Close(void); HRESULT STDMETHODCALLTYPE AddNamedItem( /* [in] */ LPCOLESTR pstrName, /* [in] */ DWORD dwFlags); HRESULT STDMETHODCALLTYPE AddTypeLib( /* [in] */ REFGUID rguidTypeLib, /* [in] */ DWORD dwMajor, /* [in] */ DWORD dwMinor, /* [in] */ DWORD dwFlags) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptDispatch( /* [in] */ LPCOLESTR pstrItemName, /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppdisp); HRESULT STDMETHODCALLTYPE GetCurrentScriptThreadID( /* [out] */ SCRIPTTHREADID __RPC_FAR *pstidThread) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptThreadID( /* [in] */ DWORD dwWin32ThreadId, /* [out] */ SCRIPTTHREADID __RPC_FAR *pstidThread) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptThreadState( /* [in] */ SCRIPTTHREADID stidThread, /* [out] */ SCRIPTTHREADSTATE __RPC_FAR *pstsState) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE InterruptScriptThread( /* [in] */ SCRIPTTHREADID stidThread, /* [in] */ const EXCEPINFO __RPC_FAR *pexcepinfo, /* [in] */ DWORD dwFlags) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IActiveScript __RPC_FAR *__RPC_FAR *ppscript) { return E_NOTIMPL; }
// IActiveScriptParse
HRESULT STDMETHODCALLTYPE InitNew(void) { return S_OK; } HRESULT STDMETHODCALLTYPE AddScriptlet( /* [in] */ LPCOLESTR pstrDefaultName, /* [in] */ LPCOLESTR pstrCode, /* [in] */ LPCOLESTR pstrItemName, /* [in] */ LPCOLESTR pstrSubItemName, /* [in] */ LPCOLESTR pstrEventName, /* [in] */ LPCOLESTR pstrDelimiter, /* [in] */ DWORD_PTR dwSourceContextCookie, /* [in] */ ULONG ulStartingLineNumber, /* [in] */ DWORD dwFlags, /* [out] */ BSTR __RPC_FAR *pbstrName, /* [out] */ EXCEPINFO __RPC_FAR *pexcepinfo) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE ParseScriptText( /* [in] */ LPCOLESTR pstrCode, /* [in] */ LPCOLESTR pstrItemName, /* [in] */ IUnknown __RPC_FAR *punkContext, /* [in] */ LPCOLESTR pstrDelimiter, /* [in] */ DWORD_PTR dwSourceContextCookie, /* [in] */ ULONG ulStartingLineNumber, /* [in] */ DWORD dwFlags, /* [out] */ VARIANT __RPC_FAR *pvarResult, /* [out] */ EXCEPINFO __RPC_FAR *pexcepinfo);
private: // Methods
CAudioVBScriptEngine();
// Data
long m_cRef; SmartRef::ComPtr<IActiveScriptSite> m_scomActiveScriptSite; SmartRef::ComPtr<EngineDispatch> m_scomEngineDispatch;
Script m_script; SmartRef::ComPtr<IDispatch> m_scomGlobalDispatch; };
|