Create a project in VC++ 4.0 .The project files will be
sss1.cpp
sss.cpp
sss.odl
sss.rc

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....
Continued

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