The script file is c.txt
sss1.cpp
#define INITGUID
#include <windows.h>
#include <olectl.h>
#include "olescrpt.h"
#include "vbsguids.h"
#include "helpers.h"
#include "sss.h"
sss.odl
[uuid(00000001-669C-11cf-A92B-00AA00688A2F),version(1.0)]
library sss
{
importlib("stdole32.tlb");
coclass ABCD;
interface IABCD;
dispinterface IABCDEvents;
[uuid(00000002-669C-11cf-A92B-00AA00688A2F),odl,dual]
interface IABCD :IDispatch
{
[id(1),propget] HRESULT Application([out,retval] IABCD ** ppRet);
[id(2),propget] HRESULT Parent([out,retval] IABCD ** ppRet);
[id(6),propput] HRESULT Image([in] int val);
[id(7),propget] HRESULT xyz([out,retval] int *val);
[id(41),propget,source] HRESULT BubbleClass([out,retval] IABCD **pRet);
}
[uuid(00000003-669C-11cf-A92B-00AA00688A2F)]
dispinterface IABCDEvents
{
properties:
methods:
[id(9)] void NewABCD();
[id(10)] void Init();
}
[uuid(00000004-669C-11cf-A92B-00AA00688A2F)]
coclass ABCD
{
        [default]interface IABCD;
        [default,source]dispinterface IABCDEvents;
};
}
sss.rc
1 typelib "sss.tlb"
c.txt
OPTION EXPLICIT
Sub ABCD_NewABCD()
BubbleClass.Image=60
BubbleClass.Image=BubbleClass.xyz
End Sub
Sub ABCD_Init ()
BubbleClass.Image=100
End Sub
sss.h
/* This header file machine-generated by mktyplib.exe */
/* Interface to type library: sss */
#ifndef _sss_H_
#define _sss_H_
DEFINE_GUID(LIBID_sss,0x00000001L,0x669C,0x11CF,0xA9,0x2B,0x00,0xAA,0x00,0x68,0x8A,0x2F);
#ifdef __cplusplus
class ABCD;
#endif
interface IABCD;
interface IABCDEvents;
DEFINE_GUID(IID_IABCD,0x00000002L,0x669C,0x11CF,0xA9,0x2B,0x00,0xAA,0x00,0x68,0x8A,0x2F);
/* Definition of interface: IABCD */
#undef INTERFACE
#define INTERFACE IABCD
DECLARE_INTERFACE_(IABCD, IDispatch)
{
#ifndef NO_BASEINTERFACE_FUNCS
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;
    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;
    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;
    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif
    /* IABCD methods */
    STDMETHOD(get_Application)(THIS_ IABCD FAR* FAR* ppRet) PURE;
    STDMETHOD(get_Parent)(THIS_ IABCD FAR* FAR* ppRet) PURE;
    STDMETHOD(put_Image)(THIS_ int val) PURE;
    STDMETHOD(get_xyz)(THIS_ int FAR* val) PURE;
    STDMETHOD(get_BubbleClass)(THIS_ IABCD FAR* FAR* pRet) PURE;
};
DEFINE_GUID(DIID_IABCDEvents,0x00000003L,0x669C,0x11CF,0xA9,0x2B,0x00,0xAA,0x00,0x68,0x8A,0x2F);
/* Definition of dispatch interface: IABCDEvents */
#undef INTERFACE
#define INTERFACE IABCDEvents
DECLARE_INTERFACE_(IABCDEvents, IDispatch)
{
#ifndef NO_BASEINTERFACE_FUNCS
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;
    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;
    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;
    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif
    /* IABCDEvents methods:
    void NewABCD(void);
    void Init(void);
    */
};
DEFINE_GUID(CLSID_ABCD,0x00000004L,0x669C,0x11CF,0xA9,0x2B,0x00,0xAA,0x00,0x68,0x8A,0x2F);
#ifdef __cplusplus
class ABCD;
#endif
#endif
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
IOleScript *m_pIOleScript;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0; }
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("13");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("14");return 0; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** )
{abc("15");return 0; }
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
       	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
        m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
14..
113..
m_pIOleScript->SetScriptSite...h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0; }
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("13");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** )
{abc("15");return 0; }
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
        m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0; }
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("13");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** )
{abc("15");return 0; }
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
    m_pIPersistStreamInit->InitNew();
    m_pIPersistStreamInit->Release();
    m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	
	abc("end..");
	MessageBox(0,"end","end",0);
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
15..
m_pIOleScript->AddNamedItem...h..80004002..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("11");return 0; }
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScriptSite::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
    m_pIPersistStreamInit->InitNew();
    m_pIPersistStreamInit->Release();
	
	m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScriptSite::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
11..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..80004002..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
    m_pIPersistStreamInit->InitNew();
    m_pIPersistStreamInit->Release();
    m_pIOleScriptSite = new CIOleScriptSite;
    h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..80004002..
end....
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIDispatch :public IDispatch
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
};
CIDispatch *m_pIDispatch;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIDispatch = new CIDispatch;
	m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIDispatch;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100];
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h=m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
        unsigned long b,struct IUnknown **m_pIUnknown,
        struct ITypeInfo ** m_pITypeInfo)
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
                *m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,
	struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
CIOleScriptSite::Release..
43..
113..
m_pIOleScript->SetScriptState..h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("41");return 0;}
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
41..
error.....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("47");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("113");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
		abc("CIABCD::IID_IProvideClassInfo");
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
113..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
42..
42..
42..
42..
42..
42..
42..
47..
47..
47..
CIOleScriptSite::Release..
43..
113..
m_pIOleScript->SetScriptState..h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("Invoke");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIProvideClassInfo :public IProvideClassInfo
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("51");return 0; }
unsigned long __stdcall AddRef(void)
{abc("52");return 0; }
unsigned long __stdcall Release(void)
{abc("53");return 0; }
long __stdcall GetClassInfo(struct ITypeInfo ** )
{abc("54");return 0; }
};
CIProvideClassInfo *m_pIProvideClassInfo;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	m_pIProvideClassInfo = new CIProvideClassInfo ;
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
	{
		abc("CIABCD::IID_IProvideClassInfo");
		*ppv = m_pIProvideClassInfo;
		return 0;
	}
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
54..
error.....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *)
{abc("Invoke");return 0;}
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIProvideClassInfo :public IProvideClassInfo
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("51");return 0; }
unsigned long __stdcall AddRef(void)
{abc("52");return 0; }
unsigned long __stdcall Release(void)
{abc("53");return 0; }
long __stdcall GetClassInfo(struct ITypeInfo ** );
};
CIProvideClassInfo *m_pIProvideClassInfo;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	m_pIProvideClassInfo = new CIProvideClassInfo ;
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
	{
		abc("CIABCD::IID_IProvideClassInfo");
		*ppv = m_pIProvideClassInfo;
		return 0;
	}
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
long __stdcall CIProvideClassInfo::GetClassInfo(struct ITypeInfo **m_pITypeInfo )
{
	abc("CIProvideClassInfo::GetClassInfo");
	*m_pITypeInfo = m_pITypeInfoCls;
        (*m_pITypeInfo)->AddRef();
	return 0; 
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
CIProvideClassInfo::GetClassInfo..
53..
42..
42..
42..
42..
42..
42..
42..
42..
Invoke..
Invoke..
Invoke..
CIOleScriptSite::Release..
43..
CIABCD::QueryInterface..
CIABCD::IID_IConnectionPointContainer..
OnStateChange..
m_pIOleScript->SetScriptState..h..00000000..
end....
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *);
long __stdcall get_Application(struct IABCD ** ){abc("48");return 0;}
long __stdcall get_Parent(struct IABCD ** ){abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIProvideClassInfo :public IProvideClassInfo
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("51");return 0; }
unsigned long __stdcall AddRef(void)
{abc("52");return 0; }
unsigned long __stdcall Release(void)
{abc("53");return 0; }
long __stdcall GetClassInfo(struct ITypeInfo ** );
};
CIProvideClassInfo *m_pIProvideClassInfo;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	m_pIProvideClassInfo = new CIProvideClassInfo ;
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
	{
		abc("CIABCD::IID_IProvideClassInfo");
		*ppv = m_pIProvideClassInfo;
		return 0;
	}
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
long __stdcall CIProvideClassInfo::GetClassInfo(struct ITypeInfo **m_pITypeInfo )
{
	abc("CIProvideClassInfo::GetClassInfo");
	*m_pITypeInfo = m_pITypeInfoCls;
        (*m_pITypeInfo)->AddRef();
	return 0; 
}
long __stdcall CIABCD::Invoke(long dispid,const struct _GUID & riid,
 unsigned long lciid,unsigned short wFlags, struct tagDISPPARAMS * pdispparams,
struct tagVARIANT * pvarResult,struct tagEXCEPINFO * pexcepinfo,
unsigned int * Err)
{	sprintf(aa,"Invoke..dispid....%ld",dispid);
	abc(aa);
        m_pITypeInfoIntf->Invoke(this,dispid,wFlags,pdispparams,pvarResult,
		pexcepinfo,Err);
return 0;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
CIProvideClassInfo::GetClassInfo..
53..
42..
42..
42..
42..
42..
42..
42..
42..
Invoke..dispid....1..
48..
error......
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *);
long __stdcall get_Application(struct IABCD ** );
long __stdcall get_Parent(struct IABCD ** )
{abc("49");return 0;}
long __stdcall put_Image(int){abc("50");return 0;}
long __stdcall get_xyz(int *){abc("51");return 0;}
long __stdcall get_BubbleClass(struct IABCD ** ){abc("52");return 0;}
};
CIABCD *m_pIABCD;
class CIProvideClassInfo :public IProvideClassInfo
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("51");return 0; }
unsigned long __stdcall AddRef(void)
{abc("52");return 0; }
unsigned long __stdcall Release(void)
{abc("53");return 0; }
long __stdcall GetClassInfo(struct ITypeInfo ** );
};
CIProvideClassInfo *m_pIProvideClassInfo;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	m_pIProvideClassInfo = new CIProvideClassInfo ;
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
	{
		abc("CIABCD::IID_IProvideClassInfo");
		*ppv = m_pIProvideClassInfo;
		return 0;
	}
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
long __stdcall CIProvideClassInfo::GetClassInfo(struct ITypeInfo **m_pITypeInfo )
{
	abc("CIProvideClassInfo::GetClassInfo");
	*m_pITypeInfo = m_pITypeInfoCls;
        (*m_pITypeInfo)->AddRef();
	return 0; 
}
long __stdcall CIABCD::Invoke(long dispid,const struct _GUID & riid,
 unsigned long lciid,unsigned short wFlags, struct tagDISPPARAMS * pdispparams,
struct tagVARIANT * pvarResult,struct tagEXCEPINFO * pexcepinfo,
unsigned int * Err)
{	sprintf(aa,"Invoke..dispid....%ld",dispid);
	abc(aa);
        m_pITypeInfoIntf->Invoke(this,dispid,wFlags,pdispparams,pvarResult,
		pexcepinfo,Err);
return 0;
}
long __stdcall CIABCD::get_Application(struct IABCD ** m_pIABCD)
{
	*m_pIABCD = this; 
	abc("CIABCD::get_Application");
	return 0;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
CIProvideClassInfo::GetClassInfo..
53..
42..
42..
42..
42..
42..
42..
42..
42..
Invoke..dispid....1..
CIABCD::get_Application..
42..
43..
Invoke..dispid....2..
49..
sss.cpp
#define STRICT
#include <windows.h>
#include <olectl.h>
#include "OleScrpt.h"
#include "VBSGuids.h"
#include "helpers.h"
#include <stdio.h>
#include "sss.h"
void abc(char *p)
{
	FILE * fp;
	fp = fopen("d:\\sss\\s.txt","a+");
	fprintf(fp,"%s..\n",p);
	fclose(fp);
}
class CIABCD :public IABCD
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef(void)
{abc("42");return 0;}
unsigned long __stdcall Release(void)
{abc("43");return 0;}
long __stdcall GetTypeInfoCount(unsigned int *)
{abc("44");return 0;}
long __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{abc("45");return 0;}
long __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned int,unsigned long,long *)
{abc("46");return 0;}
long __stdcall Invoke(long,const struct _GUID &,unsigned long,unsigned short,
					  struct tagDISPPARAMS *,struct tagVARIANT *,
					  struct tagEXCEPINFO *,unsigned int *);
long __stdcall get_Application(struct IABCD ** );
long __stdcall get_Parent(struct IABCD ** );
long __stdcall put_Image(int);
long __stdcall get_xyz(int *);
long __stdcall get_BubbleClass(struct IABCD ** );
};
CIABCD *m_pIABCD;
class CIProvideClassInfo :public IProvideClassInfo
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("51");return 0; }
unsigned long __stdcall AddRef(void)
{abc("52");return 0; }
unsigned long __stdcall Release(void)
{abc("53");return 0; }
long __stdcall GetClassInfo(struct ITypeInfo ** );
};
CIProvideClassInfo *m_pIProvideClassInfo;
class CIOleScriptSite :public IOleScriptSite
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** );
unsigned long __stdcall AddRef()
{abc("12");return 0; }
unsigned long __stdcall Release()
{abc("CIOleScriptSite::Release");return 0; }
long __stdcall GetLCID(unsigned long *)
{abc("CIOleScript::GetLCID");return E_NOTIMPL; }
long __stdcall GetItemInfo(const unsigned short *,
	unsigned long,struct IUnknown ** ,struct ITypeInfo ** );
long __stdcall GetDocVersionString(unsigned short ** )
{abc("16");return 0; }
long __stdcall RequestItems()
{abc("17");return 0; }
long __stdcall RequestTypeLibs()
{abc("18");return 0; }
long __stdcall GetComponentManager(struct IOleComponentManager ** )
{abc("19");return 0; }
long __stdcall EnableModeless(int)
{abc("111");return 0; }
long __stdcall OnScriptTerminate(const struct tagVARIANT *,const struct tagEXCEPINFO *)
{abc("112");return 0; }
long __stdcall OnStateChange(SCRIPTSTATE)
{abc("OnStateChange");return 0; }
long __stdcall OnScriptError(const struct tagEXCEPINFO *)
{abc("114");return 0; }
long __stdcall CreateItem(const unsigned short *,struct IUnknown ** )
{abc("115");return 0; }
};
IOleScript *m_pIOleScript;
IOleScriptParse *m_pIOleScriptParse;
CIOleScriptSite *m_pIOleScriptSite;
HRESULT h;
char aa[100],*bb;
FILE * ff;
HINSTANCE ii;
ITypeLib *m_pITypeLib;
ITypeInfo *m_pITypeInfoCls;
ITypeInfo *m_pITypeInfoIntf;
int _stdcall WinMain(HINSTANCE i, HINSTANCE j, LPSTR k, int l)
{
  	abc("start...");
	ii = i;
	CoInitialize(0);
	h = CoCreateInstance(CLSID_VBScript,0,CLSCTX_INPROC_SERVER,
	IID_IUnknown,(void **)&m_pIOleScript);
	sprintf(aa,"CoCreateInstance..h..%p m_pIOleScript...%p",h,m_pIOleScript);
	abc(aa);
        h = m_pIOleScript->QueryInterface(IID_IOleScriptParse,(void **)&m_pIOleScriptParse);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIOleScriptParse..%p",h,m_pIOleScriptParse);
	abc(aa);
	IPersistStreamInit *m_pIPersistStreamInit ;
        h=m_pIOleScript->QueryInterface(IID_IPersistStreamInit,(void**)&m_pIPersistStreamInit);
        sprintf(aa,"m_pIOleScript->QueryInterface..h..%p..m_pIPersistStreamInit..%p",h,m_pIPersistStreamInit);
	abc(aa);
        m_pIPersistStreamInit->InitNew();
        m_pIPersistStreamInit->Release();
	m_pIABCD = new CIABCD;
	m_pIOleScriptSite = new CIOleScriptSite;
        h-m_pIOleScript->SetScriptSite(m_pIOleScriptSite);
        sprintf(aa,"m_pIOleScript->SetScriptSite...h..%p",h);
	abc(aa);
        h=m_pIOleScript->AddNamedItem(L"ABCD",SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_EXISTS);
        sprintf(aa,"m_pIOleScript->AddNamedItem...h..%p",h);
	abc(aa);
	bb = new char [1000];
	ff = fopen("d:\\sss\\c.txt","r");
	fread(bb,155,1,ff);
	bb[155]=0;
	MAKE_WIDEPTR_FROMANSI(t,bb);
        h=m_pIOleScriptParse->ParseScriptText(t,L"ABCD",0,0,SCRIPTTEXT_KEEPDEFINITIONS,0,0);
        sprintf(aa,"m_pIOleScriptParse->ParseScriptText..%p",h);
	abc(aa);
	m_pIProvideClassInfo = new CIProvideClassInfo ;
        h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED);
        sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h);
	abc(aa);
	abc("end..");
	MessageBox(0,"end","end",0);
}
long __stdcall CIOleScriptSite::GetItemInfo(const unsigned short *a,
	unsigned long b,struct IUnknown **m_pIUnknown ,struct ITypeInfo ** m_pITypeInfo )
{	abc("CIOleScriptSite::GetItemInfo");
	if(b & SCRIPTINFO_IUNKNOWN)	
	{
		abc("GetItemInfo..SCRIPTINFO_IUNKNOWN");
		*m_pIUnknown = this;
	}
	if(b & SCRIPTINFO_ITYPEINFO)
	{
	abc("GetItemInfo..SCRIPTINFO_ITYPEINFO");
	char dd[512];
	GetModuleFileName(ii,dd,512);
	sprintf(aa,"GetModuleName..dd=%s",dd);
	abc(aa);
	MAKE_WIDEPTR_FROMANSI(tt,dd);
	LoadTypeLib(tt,&m_pITypeLib);
        m_pITypeLib->GetTypeInfoOfGuid(CLSID_ABCD,&m_pITypeInfoCls);
        m_pITypeLib->GetTypeInfoOfGuid(IID_IABCD,&m_pITypeInfoIntf);
	*m_pITypeInfo=m_pITypeInfoCls;
	}	
	return 0;
 }
long __stdcall CIOleScriptSite::QueryInterface(REFIID riid,void **ppv )
{
	abc("CIOleScriptSite::QueryInterface");
	if(riid == IID_IDispatch)
	{
	 *ppv = m_pIABCD;
	abc("CIOleScriptSite::QueryInterface..IID_IDispatch");
	return 0;
	}
	if (riid == IID_IProvideClassInfo)
	{
	abc("CIOleScript::QueryInterface..IID_IProvideClassInfo");
	}
	return E_NOINTERFACE;
}
long __stdcall CIABCD::QueryInterface(REFIID riid,void **ppv )
{	abc("CIABCD::QueryInterface");
	if (riid == IID_IDispatch)
		abc("CIABCD::IID_IDispatch");
	if(riid == IID_IProvideClassInfo)
	{
		abc("CIABCD::IID_IProvideClassInfo");
		*ppv = m_pIProvideClassInfo;
		return 0;
	}
	if(riid == IID_IConnectionPointContainer)
		abc("CIABCD::IID_IConnectionPointContainer");
	return E_NOINTERFACE;
}
long __stdcall CIProvideClassInfo::GetClassInfo(struct ITypeInfo **m_pITypeInfo )
{
	abc("CIProvideClassInfo::GetClassInfo");
	*m_pITypeInfo = m_pITypeInfoCls;
        (*m_pITypeInfo)->AddRef();
	return 0; 
}
long __stdcall CIABCD::Invoke(long dispid,const struct _GUID & riid,
 unsigned long lciid,unsigned short wFlags, struct tagDISPPARAMS * pdispparams,
struct tagVARIANT * pvarResult,struct tagEXCEPINFO * pexcepinfo,
unsigned int * Err)
{	sprintf(aa,"Invoke..dispid....%ld",dispid);
	abc(aa);
        m_pITypeInfoIntf->Invoke(this,dispid,wFlags,pdispparams,pvarResult,
		pexcepinfo,Err);
return 0;
}
long __stdcall CIABCD::get_Application(struct IABCD ** m_pIABCD)
{
	*m_pIABCD = this; 
	abc("CIABCD::get_Application");
	return 0;
}
long __stdcall CIABCD::get_Parent(struct IABCD ** m_pIABCD)
{	
	*m_pIABCD = this;
	abc("CIABCD::get_Parent");
	return 0;
}
long __stdcall CIABCD::put_Image(int val)
{	
	sprintf(aa,"CIABCD::put_Image..val..%d",val);
	abc(aa);
	return 0;
}
long __stdcall CIABCD::get_xyz(int * val)
{
	*val = 4;
	sprintf(aa,"CIABCD::get_xyz...%d",*val);
	abc(aa);
	return 0;
}
long __stdcall CIABCD::get_BubbleClass(struct IABCD ** m_pIABCD)
{	
	*m_pIABCD=this;
	abc("CIABCD::get_BubbleClass");
	return 0;
}
s.txt
start.....
CoCreateInstance..h..00000000 m_pIOleScript...00BE0078..
m_pIOleScript->QueryInterface..h..00000000..m_pIOleScriptParse..00BE007C..
m_pIOleScript->QueryInterface..h..00000000..m_pIPersistStreamInit..00BE0080..
CIOleScript::GetLCID..
OnStateChange..
m_pIOleScript->SetScriptSite...h..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
42..
42..
43..
CIOleScriptSite::Release..
m_pIOleScript->AddNamedItem...h..00000000..
m_pIOleScriptParse->ParseScriptText..00000000..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_IUNKNOWN..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::QueryInterface..IID_IDispatch..
CIOleScriptSite::QueryInterface..
CIOleScriptSite::GetItemInfo..
GetItemInfo..SCRIPTINFO_ITYPEINFO..
GetModuleName..dd=D:\SSS\RELEASE\SSS.EXE..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
CIProvideClassInfo::GetClassInfo..
53..
42..
42..
42..
42..
42..
42..
42..
42..
Invoke..dispid....1..
CIABCD::get_Application..
42..
43..
Invoke..dispid....2..
CIABCD::get_Parent..
42..
43..
Invoke..dispid....41..
CIABCD::get_BubbleClass..
42..
CIABCD::QueryInterface..
CIABCD::QueryInterface..
CIABCD::IID_IProvideClassInfo..
CIProvideClassInfo::GetClassInfo..
53..
42..
43..
CIOleScriptSite::Release..
43..
CIABCD::QueryInterface..
CIABCD::IID_IConnectionPointContainer..
CIABCD::QueryInterface..
CIABCD::IID_IConnectionPointContainer..
OnStateChange..
m_pIOleScript->SetScriptState..h..00000000..
end....
Have any suggestions, comments, ideas, cracked code, feed back ? Feel free to let us know .
Want to be in touch with still more latest technologies? Visit VIJAY MUKHI'S TECHNOLOGY CORNUCOPIA .