Note: Speech.h will be in the current directory
Makefile USE_BASECTL=1 Proj = IELnk6 # pull in the master SDK makefile that defines all of the macros # and all of the build rules !include <INetSDK.Mak> all: $(ObjDir)\$(Proj).Ocx Register $(ObjDir)\$(Proj).Ocx: $(@R).Obj $(@R).Res $(ObjDir)\Guids.Obj \ $(ObjDir)\$(Proj).Res: $(@B).Rc $(@R).Tlb $(ObjDir)\$(Proj).tlb $(ObjDir)\Guids.Obj: $(@B).Cpp c:\inetsdk\samples\basectl\Include\IPServer.H \ $(@D)\IELnk6Ifc.H $(ObjDir)\IELnk6.Obj: $(@B).Cpp c:\inetsdk\samples\basectl\Include\IPServer.H \ c:\inetsdk\samples\basectl\Include\LocalSrv.H \ $(@D)\IELnk6Ifc.H c:\inetsdk\samples\basectl\Include\CtrlObj.H \ c:\inetsdk\samples\basectl\Include\Globals.H \ c:\inetsdk\samples\basectl\Include\Util.H \ IELnk6.cpp #define INITOBJECTS // define the descriptions for our objects #include "IPServer.H" #include "ielnk6Ifc.H" #include "CtrlObj.H" #include "Globals.H" #include "Util.H" #include <stdio.h> #include <windows.h> #include <objbase.h> #include <objerror.h> #include <ole2ver.h> #include "speech.h" void abc(char *p){FILE *fp=fopen("z.txt","a+");fprintf(fp,"%s\n",p);fclose(fp);} struct sockaddr_in A;WSADATA W;SOCKET S;char aa[60000];int i;struct hostent *H; char R[60000]; int ff=0;long tot; void printlett(); char nc[5000]; class CielnkControl : public COleControl, public Iielnk { public: DECLARE_STANDARD_UNKNOWN(); DECLARE_STANDARD_DISPATCH(); long _stdcall put_Hlink (BSTR val) ; STDMETHOD(put_Mode)(BSTR val) ; STDMETHOD(get_stat)(THIS_ long FAR* val) ; STDMETHOD(get_text)(THIS_ BSTR FAR* val) ; STDMETHOD_(void, Go)(THIS) ; STDMETHOD_(void,quit)(THIS); STDMETHOD_(void,next)(THIS); STDMETHOD_(VOID,prev)(THIS); CielnkControl(IUnknown *pUnkOuter); static IUnknown *Create(IUnknown *); STDMETHOD(LoadBinaryState)(IStream *pStream); STDMETHOD(SaveBinaryState)(IStream *pStream); STDMETHOD(LoadTextState)(IPropertyBag *pPropertyBag, IErrorLog *pErrorLog); STDMETHOD(SaveTextState)(IPropertyBag *pPropertyBag, BOOL fWriteDefault); STDMETHOD(OnDraw)(DWORD dvaspect, HDC hdcDraw, LPCRECTL prcBounds, LPCRECTL prcWBounds, HDC hicTargetDev, BOOL fOptimize) { return S_OK;} virtual LRESULT WindowProc( UINT msg, WPARAM wParam, LPARAM lParam); virtual BOOL RegisterClassData(void); }; DEFINE_CONTROLOBJECT(ielnk, &CLSID_ielnk,"ielnkCtl", CielnkControl::Create, 1,&IID_Iielnk,"ielnk.HLP",&DIID_DielnkEvents,OLEMISC_SETCLIENTSITEFIRST|OLEMISC_ACTIVATEWHENVISIBLE|OLEMISC_RECOMPOSEONRESIZE|OLEMISC_CANTLINKINSIDE|OLEMISC_INSIDEOUT,0,0,"ielnkWn dClass",1,0,0,NULL); char ii[100],jj[100] ; const CLSID *g_pLibid = &LIBID_ielnkObjects; WNDPROC g_ParkingWindowProc = NULL; const VARIANT_BOOL g_fSatelliteLocalization = FALSE; LCID g_lcidLocale = MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT); const WCHAR g_wszLicenseKey [] = L""; const WCHAR g_wszLicenseLocation [] = L""; OBJECTINFO g_ObjectInfo[] = {CONTROLOBJECT(ielnk),EMPTYOBJECT, EMPTYOBJECT }; const char g_szLibName[] = "ielnk"; void InitializeLibrary(void){} void UninitializeLibrary(void){} BOOL CheckForLicense(void) { return TRUE;} BOOL RegisterData(void){ return TRUE;} BOOL UnregisterData(void){ return TRUE;} BOOL CheckLicenseKey(LPWSTR wszCheckme){ return TRUE;} BSTR GetLicenseKey(void){return NULL;} HANDLE hIP;WSADATA wsa;HANDLE hIcmp;DWORD *dwIPAddr;struct hostent *phostent; DWORD d; HANDLE ( WINAPI *pIcmpCreateFile )( VOID ); BOOL ( WINAPI *pIcmpCloseHandle )( HANDLE ); DWORD (WINAPI *pIcmpSendEcho)(HANDLE,DWORD,LPVOID,WORD,LPVOID,LPVOID,DWORD,DWORD); typedef HANDLE (WINAPI *FARPROC1)(void); typedef BOOL (WINAPI *FARPROC2)(HANDLE ); typedef DWORD (WINAPI *FARPROC3)(HANDLE,DWORD,LPVOID,WORD,LPVOID,LPVOID,DWORD,DWORD); WNDCLASS wndclass;char bb[200]; class CIVT : public IVTxtNotifySink { public: STDMETHODIMP QueryInterface (REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); STDMETHODIMP AttribChanged (DWORD); STDMETHODIMP Visual (WCHAR, char, DWORD, PTTSMOUTH); STDMETHODIMP Speak (PSTR, PSTR, DWORD); STDMETHODIMP SpeakingStarted (void); STDMETHODIMP SpeakingDone (void); }; PIVOICETEXT gpIVTxt;CIVT * gpVTxtNotifySink; STDMETHODIMP CIVT::QueryInterface (REFIID riid, LPVOID *ppv) { *ppv = NULL; if (IsEqualIID (riid, IID_IUnknown) || IsEqualIID(riid,IID_IVTxtNotifySink)) { abc("CIVT::QueryInterface 1"); *ppv = (LPVOID) this; AddRef(); return NOERROR; } return E_NOINTERFACE; } STDMETHODIMP_ (ULONG) CIVT::AddRef (void){ return 0;} STDMETHODIMP_(ULONG) CIVT::Release (void){ return 0;} STDMETHODIMP CIVT::AttribChanged(DWORD dwAttribute){ return NOERROR;} STDMETHODIMP CIVT::SpeakingStarted(void){return 0;} STDMETHODIMP CIVT::SpeakingDone(void){return 0;} STDMETHODIMP CIVT::Visual(WCHAR cIPAPhoneme, char cEnginePhoneme, DWORD dwFlags, PTTSMOUTH pTTSMouth){ return NOERROR;} STDMETHODIMP CIVT::Speak(PSTR pszMessage,PSTR pszApplication,DWORD dwTyep) { sprintf(aa,"pszMessage %s pszApplication %s dwTyep %ld", pszMessage,pszApplication,dwTyep); abc(aa); return NOERROR; } IUnknown *CielnkControl::Create( IUnknown *pUnkOuter) { CoInitialize(NULL); CoCreateInstance(CLSID_VTxt, NULL,CLSCTX_LOCAL_SERVER, IID_IVoiceText, (void **)&gpIVTxt); gpVTxtNotifySink = new CIVT; gpIVTxt->Register(NULL,"SRClock",gpVTxtNotifySink, IID_IVTxtNotifySink, VTXTF_ALLMESSAGES, NULL); CielnkControl *pNew = new CielnkControl(pUnkOuter); return pNew->PrivateUnknown(); } CielnkControl::CielnkControl( IUnknown *pUnkOuter) : COleControl(pUnkOuter, 0, (IDispatch *)this) { } BOOL CielnkControl::RegisterClassData( void) { wndclass.lpfnWndProc = COleControl::ControlWindowProc; wndclass.hInstance = g_hInstance; wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndclass.lpszClassName = WNDCLASSNAMEOFCONTROL(0); return RegisterClass(&wndclass); } STDMETHODIMP CielnkControl::LoadTextState(IPropertyBag *pPropertyBag,IErrorLog *pErrorLog){ return S_OK;} STDMETHODIMP CielnkControl::LoadBinaryState( IStream *pStream){ return S_OK;} STDMETHODIMP CielnkControl::SaveTextState( IPropertyBag *pPropertyBag, BOOL fWriteDefaults){ return S_OK;} STDMETHODIMP CielnkControl::SaveBinaryState( IStream *pStream){ return S_OK;} LRESULT CielnkControl::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam){ return OcxDefWindowProc(msg, wParam, lParam);} void CielnkControl::Go(void) { MessageBox(0,"in Go","In Go",0); MessageBox(0,jj,"name",0); MessageBox(0,ii,"password",0); WSAStartup (0x101, &W); S = socket(AF_INET, SOCK_STREAM,0); A.sin_family=AF_INET; A.sin_port = htons(110); H=gethostbyname("giasbm01.vsnl.net.in"); A.sin_addr.s_addr=*((unsigned long *) H->h_addr); i=connect(S,(struct sockaddr *) &A,sizeof(A)); sprintf(aa,"connect %d",i); abc(aa); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); strcpy(R,"USER "); strcat(R,jj); strcat(R,"\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strset(R,' '); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); strcpy(R,"PASS "); strcat(R,ii); strcat(R,"\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strset(R,' '); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); strcpy(R,"STAT\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strset(R,' '); i=recv(S,R,10000,0); tot = atol(R+4); int totbytes = atoi(R+6); sprintf(aa,"recv %d R== %s total no. of mails = %ld ..total bytes=%d",i,R,tot,totbytes); abc(aa); MessageBox(0,aa,"Before RETR",0); if(tot != 0) { ff = 1; printlett(); } } void printlett() { char ee[100]; strcpy(R,"RETR "); itoa(ff,ee,10); strcat(R,ee); strcat(R,"\r\n"); MessageBox(0,R,R,0); i=send(S,R,strlen(R),0); sprintf(aa,"mailno..%d..send %d ",ff,i); abc(aa); MessageBox(0,aa,aa,0); strset(R,' '); i=recv(S,R,100,0); nc[0] = '\0'; sprintf(aa,"recv chars = %d ",i); abc(aa); MessageBox(0,aa,aa,0); int cnt = atoi(R+15); sprintf(aa,"R...... %s no.of chars = %d",R,cnt); abc(aa); MessageBox(0,aa,aa,0); int ct=0; i=0; while (ct <= cnt) { sprintf(aa,"ct=%d..cnt=%d",ct,cnt); MessageBox(0,aa,aa,0); strset(R,' '); i=recv(S,R,cnt,0); sprintf(aa,"recv chars = %d ",i); strcat(nc,R); abc(aa); MessageBox(0,aa,aa,0); sprintf(aa,"R...... %s",R); abc(aa); ct=ct+i; } strcat(nc,"\0"); MessageBox(0,aa,aa,0); } void CielnkControl::quit() { strcpy(R,"QUIT\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); MessageBox(0,"all","over",0); } void CielnkControl::next() { if ( ff < tot) { ff++; printlett(); } } void CielnkControl::prev() { if ( ff > 1) { ff--; printlett(); } } STDMETHODIMP CielnkControl::put_Hlink(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal, val); lstrcpy(ii, tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_Mode(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal, val); lstrcpy(jj, tempVal); return S_OK; } STDMETHODIMP CielnkControl::get_stat (long FAR * t) { *t = tot; return S_OK; } STDMETHODIMP CielnkControl::get_text(BSTR FAR * val) { //gpIVTxt->Speak( "hello", 0, NULL ); gpIVTxt->Speak( nc, 0, NULL ); MessageBox(0,"hi","hi",0); BSTR pq=BSTRFROMANSI(nc); *val = pq; return S_OK; } Giuds.cpp #define INITGUID // define all the guids. #include "IPServer.H" #include "olectl.h" #include "ielnk6Ifc.H" #include <objbase.h> #include <objerror.h> #include <ole2ver.h> #include "speech.h" IELnk6.Def LIBRARY ielnk6 EXPORTS DllRegisterServer EXPORTS DllUnregisterServer EXPORTS DllCanUnloadNow EXPORTS DllGetClassObject IELnk6.Odl #include <olectl.h> [uuid(7d635f26-984a-11cf-a3a9-00a0c9034920),helpstring("Library"),lcid(0x0000),version(1.0)] library ielnkObjects { importlib("STDOLE32.TLB"); importlib(STDTYPE_TLB); [uuid(7e778e46-984a-11cf-a3a9-00a0c9034920),helpstring("Control"),hidden,dual,odl] interface Iielnk : IDispatch { [id(101), propput] HRESULT Hlink([in] BSTR val); // methods [id(102), propget] HRESULT stat([out, retval] long * val); [id(103), propget] HRESULT text([out, retval] BSTR *val); [id(108), propput] HRESULT Mode([in] BSTR val); // methods [id(109)] void next(); // methods [id(110)] void prev(); // methods [id(104)] void Go(void); [id(105)] void quit(void); }; [uuid(804d86c6-984a-11cf-a3a9-00a0c9034920),helpstring("Event"),hidden] dispinterface DielnkEvents { properties: methods: }; [uuid(80ec37c6-984a-11cf-a3a9-00a0c9034920),helpstring("ielnk control")] coclass ielnk { [default] interface Iielnk; [default, source] dispinterface DielnkEvents; }; }; IELnk6.Rc 1 TYPELIB MOVEABLE PURE "ielnk6.TLB" IELnk6Ifc.h /* This header file machine-generated by mktyplib.exe */ /* Interface to type library: ielnkObjects */ #ifndef _ielnkObjects_H_ #define _ielnkObjects_H_ DEFINE_GUID(LIBID_ielnkObjects,0x7D635F26L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); DEFINE_GUID(IID_Iielnk,0x7E778E46L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); /* Definition of interface: Iielnk */ #undef INTERFACE #define INTERFACE Iielnk DECLARE_INTERFACE_(Iielnk, 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 /* Iielnk methods */ STDMETHOD(put_Hlink)(THIS_ BSTR val) PURE; STDMETHOD(get_stat)(THIS_ long FAR* val) PURE; STDMETHOD(get_text)(THIS_ BSTR FAR* val) PURE; STDMETHOD(put_Mode)(THIS_ BSTR val) PURE; STDMETHOD_(void, next)(THIS) PURE; STDMETHOD_(void, prev)(THIS) PURE; STDMETHOD_(void, Go)(THIS) PURE; STDMETHOD_(void, quit)(THIS) PURE; }; DEFINE_GUID(DIID_DielnkEvents,0x804D86C6L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); /* Definition of dispatch interface: DielnkEvents */ #undef INTERFACE #define INTERFACE DielnkEvents DECLARE_INTERFACE_(DielnkEvents, 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 }; DEFINE_GUID(CLSID_ielnk,0x80EC37C6L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); #ifdef __cplusplus class ielnk; #endif #endif IELnk6.htm <HTML> <HEAD> <TITLE>Hlink Control</TITLE> </HEAD> <BODY> <OBJECT id=ielnk1 type="application/x-oleobject" classid="clsid:80EC37C6-984A-11CF-A3A9-00A0C9034920"> <PARAM NAME="hlink" value="http://www.microsoft.com" CODEBASE="http://www.vijaymukhi.com/vmis/IELnk6.Ocx"> </OBJECT><br> Name: <INPUT TYPE=TEXT size=25 NAME="nm"><p> Password : <INPUT TYPE=PASSWORD size=25 NAME="passwd"><p> <INPUT TYPE=BUTTON VALUE="Submit" NAME="BtnGo"><p> Status: <input type=text size=5 name ="stat"><p> <INPUT TYPE=BUTTON VALUE="Next" NAME="Next"> <INPUT TYPE=BUTTON VALUE="Previous" NAME="Prev"> <INPUT TYPE=BUTTON VALUE="Quit" NAME="Quit"> <p> <textarea name=txt1 rows=5 cols=80></textarea><p> <SCRIPT LANGUAGE="VBSCRIPT"> Sub BtnGo_OnClick ielnk1.mode = nm.Value ielnk1.hlink = passwd.Value ielnk1.Go() stat.Value=ielnk1.stat txt1.Value = ielnk1.text End Sub Sub Next_OnClick ielnk1.next() txt1.Value = ielnk1.text End Sub Sub Prev_OnClick ielnk1.prev() txt1.Value = ielnk1.text End Sub Sub Quit_OnClick ielnk1.quit() End Sub </SCRIPT> </BODY> </HTML>
Move back to the Vijay Mukhi's Technology Cornucopia Page to learn more about the other new Internet Technologies.