Makefile USE_BASECTL=1 Proj = IELnk3 # 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)\IELnk3Ifc.H $(ObjDir)\IELnk3.Obj: $(@B).Cpp c:\inetsdk\samples\basectl\\Include\IPServer.H \ c:\inetsdk\samples\basectl\\Include\LocalSrv.H \ $(@D)\IELnk3Ifc.H c:\inetsdk\samples\basectl\\Include\CtrlObj.H \ c:\inetsdk\samples\basectl\\Include\Globals.H \ c:\inetsdk\samples\basectl\\Include\Util.H \ IELnk3.cpp #define INITOBJECTS // define the descriptions for our objects #include "IPServer.H" #include "ielnk3Ifc.H" #include "CtrlObj.H" #include "Globals.H" #include "Util.H" #include <stdio.h> #include <windows.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;int ff=0;long tot; struct hostent *H; char R[60000];char nc[5000]; void printlett(); 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 *pE); 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,"ielnkWndClass",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 ( 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]; IUnknown *CielnkControl::Create(IUnknown *pUnkOuter) { 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); 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); 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"); 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); 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) { BSTR pq=BSTRFROMANSI(nc); *val = pq; return S_OK; } IELnk3.rc 1 TYPELIB MOVEABLE PURE "ielnk3.TLB" IELnk3.Odl #include <olectl.h> [uuid(7d635f23-984a-11cf-a3a9-00a0c9034920),helpstring("Library"),lcid(0x0000),version(1.0)] library ielnkObjects { importlib("STDOLE32.TLB"); importlib(STDTYPE_TLB); [uuid(7e778e43-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(804d86c3-984a-11cf-a3a9-00a0c9034920),helpstring("Event"),hidden] dispinterface DielnkEvents { properties: methods: }; [uuid(80ec37c3-984a-11cf-a3a9-00a0c9034920),helpstring("ielnk control")] coclass ielnk { [default] interface Iielnk; [default, source] dispinterface DielnkEvents; }; }; IELnk3.def LIBRARY ielnk3 EXPORTS DllRegisterServer EXPORTS DllUnregisterServer EXPORTS DllCanUnloadNow EXPORTS DllGetClassObject IELnk3Ifc.h /* This header file machine-generated by mktyplib.exe */ /* Interface to type library: ielnkObjects */ #ifndef _ielnkObjects_H_ #define _ielnkObjects_H_ DEFINE_GUID(LIBID_ielnkObjects,0x7D635F23L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); DEFINE_GUID(IID_Iielnk,0x7E778E43L,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,0x804D86C3L,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,0x80EC37C3L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); #ifdef __cplusplus class ielnk; #endif #endif Guids.cpp #define INITGUID // define all the guids. #include "IPServer.H" #include "olectl.h" #include "ielnk3Ifc.H" ielnk3.htm <HTML> <HEAD> <TITLE>Hlink Control</TITLE> </HEAD> <BODY> <OBJECT id=ielnk1 type="application/x-oleobject" classid="clsid:80EC37C3-984A-11CF-A3A9-00A0C9034920"> <PARAM NAME="hlink" value="http://www.microsoft.com" CODEBASE="http://www.vijaymukhi.com/vmis/IELnk3.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> Total: <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.