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 CIConnectionPoint :public IConnectionPoint
{	public:
long __stdcall QueryInterface(const struct _GUID &,void ** ){abc("71");return 0;}
unsigned long __stdcall AddRef(void){abc("72");return 0;}
unsigned long __stdcall Release(void){abc("73");return 0;}
long __stdcall GetConnectionInterface(struct _GUID *){abc("74");return 0;}
long __stdcall GetConnectionPointContainer(struct IConnectionPointContainer ** ){abc("75");return 0;}
long __stdcall Advise(struct IUnknown *,unsigned long *){abc("76");return 0;}
long __stdcall Unadvise(unsigned long){abc("77");return 0;}
long __stdcall EnumConnections(struct IEnumConnections ** ){abc("78");return 0;}
};

CIConnectionPoint *m_pIConnectionPoint;

class CIConnectionPointContainer :public IConnectionPointContainer
{
public:
long __stdcall QueryInterface(const struct _GUID &,void ** )
{abc("61");return 0;}
unsigned long __stdcall AddRef()
{abc("62");return 0;}
unsigned long __stdcall Release()
{abc("63");return 0;}
long __stdcall EnumConnectionPoints(struct IEnumConnectionPoints ** )
{abc("64");return 0;}
long __stdcall FindConnectionPoint(const struct _GUID &,struct IConnectionPoint ** );


};
CIConnectionPointContainer *m_pIConnectionPointContainer;


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_pIConnectionPoint = new CIConnectionPoint ;
	m_pIConnectionPointContainer = new CIConnectionPointContainer ;
	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");
		*ppv = m_pIConnectionPointContainer;
		return 0;
	}

	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;
}
long __stdcall CIConnectionPointContainer::FindConnectionPoint(REFIID riid,struct IConnectionPoint **m_pIConnectionPt )
{
	abc("CIConnectionPointContainer::FindConnectionPoint");
	*m_pIConnectionPt = m_pIConnectionPoint;
	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..
CIConnectionPointContainer::FindConnectionPoint..
76..
63..
CIABCD::QueryInterface..
CIABCD::IID_IConnectionPointContainer..
CIConnectionPointContainer::FindConnectionPoint..
76..
63..
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 CIConnectionPoint :public IConnectionPoint { public: long __stdcall QueryInterface(const struct _GUID &,void ** ){abc("71");return 0;} unsigned long __stdcall AddRef(void){abc("72");return 0;} unsigned long __stdcall Release(void){abc("73");return 0;} long __stdcall GetConnectionInterface(struct _GUID *){abc("74");return 0;} long __stdcall GetConnectionPointContainer(struct IConnectionPointContainer ** ){abc("75");return 0;} long __stdcall Advise(struct IUnknown *,unsigned long *); long __stdcall Unadvise(unsigned long){abc("77");return 0;} long __stdcall EnumConnections(struct IEnumConnections ** ){abc("78");return 0;} }; CIConnectionPoint *m_pIConnectionPoint; class CIConnectionPointContainer :public IConnectionPointContainer { public: long __stdcall QueryInterface(const struct _GUID &,void ** ) {abc("61");return 0;} unsigned long __stdcall AddRef() {abc("62");return 0;} unsigned long __stdcall Release() {abc("63");return 0;} long __stdcall EnumConnectionPoints(struct IEnumConnectionPoints ** ) {abc("64");return 0;} long __stdcall FindConnectionPoint(const struct _GUID &,struct IConnectionPoint ** ); }; CIConnectionPointContainer *m_pIConnectionPointContainer; 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; IDispatch *m_pIDispatch; 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_pIConnectionPoint = new CIConnectionPoint ; m_pIConnectionPointContainer = new CIConnectionPointContainer ; 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"); *ppv = m_pIConnectionPointContainer; return 0; } 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; } long __stdcall CIConnectionPointContainer::FindConnectionPoint(REFIID riid,struct IConnectionPoint **m_pIConnectionPt ) { abc("CIConnectionPointContainer::FindConnectionPoint"); *m_pIConnectionPt = m_pIConnectionPoint; return 0; } long __stdcall CIConnectionPoint ::Advise(struct IUnknown *m_pIUnknown,unsigned long *c) { abc("CIConnectionPoint ::Advise"); m_pIUnknown->QueryInterface(DIID_IABCDEvents,(void**)&m_pIDispatch); 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.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. CIABCD::QueryInterface.. CIABCD::IID_IConnectionPointContainer.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. 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 CIConnectionPoint :public IConnectionPoint { public: long __stdcall QueryInterface(const struct _GUID &,void ** ){abc("71");return 0;} unsigned long __stdcall AddRef(void){abc("72");return 0;} unsigned long __stdcall Release(void){abc("73");return 0;} long __stdcall GetConnectionInterface(struct _GUID *){abc("74");return 0;} long __stdcall GetConnectionPointContainer(struct IConnectionPointContainer ** ){abc("75");return 0;} long __stdcall Advise(struct IUnknown *,unsigned long *); long __stdcall Unadvise(unsigned long){abc("77");return 0;} long __stdcall EnumConnections(struct IEnumConnections ** ){abc("78");return 0;} }; CIConnectionPoint *m_pIConnectionPoint; class CIConnectionPointContainer :public IConnectionPointContainer { public: long __stdcall QueryInterface(const struct _GUID &,void ** ) {abc("61");return 0;} unsigned long __stdcall AddRef() {abc("62");return 0;} unsigned long __stdcall Release() {abc("63");return 0;} long __stdcall EnumConnectionPoints(struct IEnumConnectionPoints ** ) {abc("64");return 0;} long __stdcall FindConnectionPoint(const struct _GUID &,struct IConnectionPoint ** ); }; CIConnectionPointContainer *m_pIConnectionPointContainer; 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; } }; DISPPARAMS dp; 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; IDispatch *m_pIDispatch; 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_pIConnectionPoint = new CIConnectionPoint ; m_pIConnectionPointContainer = new CIConnectionPointContainer ; m_pIProvideClassInfo = new CIProvideClassInfo ; h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED); sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h); abc(aa); h=m_pIDispatch->Invoke(9,IID_NULL,0,DISPATCH_METHOD,&dp,0,0,0); sprintf(aa,"m_pIDispatch->Invoke.1.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"); *ppv = m_pIConnectionPointContainer; return 0; } 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; } long __stdcall CIConnectionPointContainer::FindConnectionPoint(REFIID riid,struct IConnectionPoint **m_pIConnectionPt ) { abc("CIConnectionPointContainer::FindConnectionPoint"); *m_pIConnectionPt = m_pIConnectionPoint; return 0; } long __stdcall CIConnectionPoint ::Advise(struct IUnknown *m_pIUnknown,unsigned long *c) { abc("CIConnectionPoint ::Advise"); m_pIUnknown->QueryInterface(DIID_IABCDEvents,(void**)&m_pIDispatch); 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.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. CIABCD::QueryInterface.. CIABCD::IID_IConnectionPointContainer.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. OnStateChange.. m_pIOleScript->SetScriptState..h..00000000.. 42.. 42.. 46.. Invoke..dispid....9986958.. 46.. Invoke..dispid....9986958.. 46.. Invoke..dispid....9986958.. 43.. m_pIDispatch->Invoke.1.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 CIConnectionPoint :public IConnectionPoint { public: long __stdcall QueryInterface(const struct _GUID &,void ** ){abc("71");return 0;} unsigned long __stdcall AddRef(void){abc("72");return 0;} unsigned long __stdcall Release(void){abc("73");return 0;} long __stdcall GetConnectionInterface(struct _GUID *){abc("74");return 0;} long __stdcall GetConnectionPointContainer(struct IConnectionPointContainer ** ){abc("75");return 0;} long __stdcall Advise(struct IUnknown *,unsigned long *); long __stdcall Unadvise(unsigned long){abc("77");return 0;} long __stdcall EnumConnections(struct IEnumConnections ** ){abc("78");return 0;} }; CIConnectionPoint *m_pIConnectionPoint; class CIConnectionPointContainer :public IConnectionPointContainer { public: long __stdcall QueryInterface(const struct _GUID &,void ** ) {abc("61");return 0;} unsigned long __stdcall AddRef() {abc("62");return 0;} unsigned long __stdcall Release() {abc("63");return 0;} long __stdcall EnumConnectionPoints(struct IEnumConnectionPoints ** ) {abc("64");return 0;} long __stdcall FindConnectionPoint(const struct _GUID &,struct IConnectionPoint ** ); }; CIConnectionPointContainer *m_pIConnectionPointContainer; 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 *); 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; } }; DISPPARAMS dp; 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; IDispatch *m_pIDispatch; 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_pIConnectionPoint = new CIConnectionPoint ; m_pIConnectionPointContainer = new CIConnectionPointContainer ; m_pIProvideClassInfo = new CIProvideClassInfo ; h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED); sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h); abc(aa); h=m_pIDispatch->Invoke(9,IID_NULL,0,DISPATCH_METHOD,&dp,0,0,0); sprintf(aa,"m_pIDispatch->Invoke.1.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"); *ppv = m_pIConnectionPointContainer; return 0; } 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; } long __stdcall CIConnectionPointContainer::FindConnectionPoint(REFIID riid,struct IConnectionPoint **m_pIConnectionPt ) { abc("CIConnectionPointContainer::FindConnectionPoint"); *m_pIConnectionPt = m_pIConnectionPoint; return 0; } long __stdcall CIConnectionPoint ::Advise(struct IUnknown *m_pIUnknown,unsigned long *c) { abc("CIConnectionPoint ::Advise"); m_pIUnknown->QueryInterface(DIID_IABCDEvents,(void**)&m_pIDispatch); return 0; } long __stdcall CIABCD::GetIDsOfNames(REFIID riid,unsigned short ** m,unsigned int n,unsigned long l,long * iid) { abc("IABCD::GetIDsOfNames"); sprintf(aa,"GetIDsOfNames..DISPID..%ld",*iid); abc(aa); sprintf(aa,"GetIDsOfNames..cnames..%d",n); abc(aa); h=m_pITypeInfoIntf->GetIDsOfNames(m,n,iid); sprintf(aa,"m_pITypeInfoIntf->GetIDsOfNames..h..%p ..dispid..%ld",h,*iid); abc(aa); 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.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. CIABCD::QueryInterface.. CIABCD::IID_IConnectionPointContainer.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. OnStateChange.. m_pIOleScript->SetScriptState..h..00000000.. 42.. 42.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. GetIDsOfNames..cnames..1.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..6.. Invoke..dispid....6.. CIABCD::put_Image..val..60.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. GetIDsOfNames..cnames..1.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..7.. Invoke..dispid....7.. CIABCD::get_xyz...4.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. GetIDsOfNames..cnames..1.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..6.. Invoke..dispid....6.. CIABCD::put_Image..val..4.. 43.. m_pIDispatch->Invoke.1.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 CIConnectionPoint :public IConnectionPoint { public: long __stdcall QueryInterface(const struct _GUID &,void ** ){abc("71");return 0;} unsigned long __stdcall AddRef(void){abc("72");return 0;} unsigned long __stdcall Release(void){abc("73");return 0;} long __stdcall GetConnectionInterface(struct _GUID *){abc("74");return 0;} long __stdcall GetConnectionPointContainer(struct IConnectionPointContainer ** ){abc("75");return 0;} long __stdcall Advise(struct IUnknown *,unsigned long *); long __stdcall Unadvise(unsigned long){abc("77");return 0;} long __stdcall EnumConnections(struct IEnumConnections ** ){abc("78");return 0;} }; CIConnectionPoint *m_pIConnectionPoint; class CIConnectionPointContainer :public IConnectionPointContainer { public: long __stdcall QueryInterface(const struct _GUID &,void ** ) {abc("61");return 0;} unsigned long __stdcall AddRef() {abc("62");return 0;} unsigned long __stdcall Release() {abc("63");return 0;} long __stdcall EnumConnectionPoints(struct IEnumConnectionPoints ** ) {abc("64");return 0;} long __stdcall FindConnectionPoint(const struct _GUID &,struct IConnectionPoint ** ); }; CIConnectionPointContainer *m_pIConnectionPointContainer; 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 *); 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; } }; DISPPARAMS dp; 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; IDispatch *m_pIDispatch; 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_pIConnectionPoint = new CIConnectionPoint ; m_pIConnectionPointContainer = new CIConnectionPointContainer ; m_pIProvideClassInfo = new CIProvideClassInfo ; h=m_pIOleScript->SetScriptState(SCRIPTSTATE_CONNECTED); sprintf(aa,"m_pIOleScript->SetScriptState..h..%p",h); abc(aa); h=m_pIDispatch->Invoke(9,IID_NULL,0,DISPATCH_METHOD,&dp,0,0,0); sprintf(aa,".....m_pIDispatch->Invoke.1.h..%p.....",h); abc(aa); h=m_pIDispatch->Invoke(10,IID_NULL,0,DISPATCH_METHOD,&dp,0,0,0); sprintf(aa,".....m_pIDispatch->Invoke.2.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"); *ppv = m_pIConnectionPointContainer; return 0; } 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; } long __stdcall CIConnectionPointContainer::FindConnectionPoint(REFIID riid,struct IConnectionPoint **m_pIConnectionPt ) { abc("CIConnectionPointContainer::FindConnectionPoint"); *m_pIConnectionPt = m_pIConnectionPoint; return 0; } long __stdcall CIConnectionPoint ::Advise(struct IUnknown *m_pIUnknown,unsigned long *c) { abc("CIConnectionPoint ::Advise"); m_pIUnknown->QueryInterface(DIID_IABCDEvents,(void**)&m_pIDispatch); return 0; } long __stdcall CIABCD::GetIDsOfNames(REFIID riid,unsigned short ** m,unsigned int n,unsigned long l,long * iid) { abc("IABCD::GetIDsOfNames"); sprintf(aa,"GetIDsOfNames..DISPID..%ld",*iid); abc(aa); sprintf(aa,"GetIDsOfNames..cnames..%d",n); abc(aa); h=m_pITypeInfoIntf->GetIDsOfNames(m,n,iid); sprintf(aa,"m_pITypeInfoIntf->GetIDsOfNames..h..%p ..dispid..%ld",h,*iid); abc(aa); 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.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. CIABCD::QueryInterface.. CIABCD::IID_IConnectionPointContainer.. CIConnectionPointContainer::FindConnectionPoint.. CIConnectionPoint ::Advise.. 63.. OnStateChange.. m_pIOleScript->SetScriptState..h..00000000.. 42.. 42.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..6.. Invoke..dispid....6.. CIABCD::put_Image..val..60.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..7.. Invoke..dispid....7.. CIABCD::get_xyz...4.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..6.. Invoke..dispid....6.. CIABCD::put_Image..val..4.. 43.. .....m_pIDispatch->Invoke.1.h..00000000....... 42.. 42.. IABCD::GetIDsOfNames.. GetIDsOfNames..DISPID..9986958.. m_pITypeInfoIntf->GetIDsOfNames..h..00000000 ..dispid..6.. Invoke..dispid....6.. CIABCD::put_Image..val..100.. 43.. .....m_pIDispatch->Invoke.2.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 .


Vijay Mukhi's Computer Institute
B-13, Everest Building, Tardeo, Mumbai 400 034, India.
http://www.vijaymukhi.com
e-mail :vmukhi@giasbm01.vsnl.net.in
Tel : 91-22-496 4335 /6/7/9
Fax : 91-22-307 28 59