Makefile USE_BASECTL=1 Proj = IELnk2 # 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)\IELnk2Ifc.H $(ObjDir)\IELnk2.Obj: $(@B).Cpp c:\inetsdk\samples\basectl\Include\IPServer.H \ c:\inetsdk\samples\basectl\Include\LocalSrv.H \ $(@D)\IELnk2Ifc.H c:\inetsdk\samples\basectl\Include\CtrlObj.H \ c:\inetsdk\samples\basectl\Include\Globals.H \ c:\inetsdk\samples\basectl\Include\Util.H \ IELnk2.cpp #define INITOBJECTS // define the descriptions for our objects #include "IPServer.H" #include "ielnk2Ifc.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[1000];int i;struct hostent *H; char R[10000];char host[100]; class CielnkControl : public COleControl, public Iielnk { public: DECLARE_STANDARD_UNKNOWN(); DECLARE_STANDARD_DISPATCH(); long _stdcall put_Hlink (BSTR val) ; STDMETHOD(put_Mode)(BSTR val) ; STDMETHODIMP put_Ccopy(BSTR val); STDMETHODIMP put_Lett(BSTR val); STDMETHODIMP put_Subject(BSTR val); STDMETHODIMP put_host(BSTR val); STDMETHOD_(void, Go)(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); 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;} char ccc[100];char bb[100],ii[100],jj[100],kk[100],ll[100]; 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; 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.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,ii,"From",0); MessageBox(0,bb,"To",0); if (strlen(host) == 0) { for(int yy = 0; bb[yy] != 0 && bb[yy] !='@';yy++); if (bb[yy] == '@') strcpy(host,bb+yy+1); int len = strlen(host); host[len]='\0'; } MessageBox(0,host,"Host",0); MessageBox(0,jj,"CC",0); MessageBox(0,kk,"Lett",0); WSAStartup (0x101, &W); S = socket(AF_INET, SOCK_STREAM,0); sprintf(aa,"socket = %ld",S); MessageBox(0,aa,aa,0); A.sin_family=AF_INET; A.sin_port = htons(25); H=gethostbyname(host); MessageBox(0,host,host,0); A.sin_addr.s_addr=*((unsigned long *) H->h_addr); sprintf(aa,"addr..%ld",A.sin_addr.s_addr); MessageBox(0,aa,"addr",0); i=connect(S,(struct sockaddr *) &A,sizeof(A)); sprintf(aa,"connect %d",i); abc(aa); if ( i == -1) { 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); } MessageBox(0,aa,"Connect",0); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); MessageBox(0,aa,"Recv",0); strcpy(R,"HELO vijay.com\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d..R=%s ",i,R); abc(aa); MessageBox(0,aa,"Send Helo",0); strset(R,' '); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); MessageBox(0,aa,"Recv on Helo",0); strcpy(R,"MAIL FROM:<"); strcat(R,ii); strcat(R,">\r\n"); sprintf(aa," %s",R); abc(aa); MessageBox(0,aa,"MAIL FROM",0); i=send(S,R,strlen(R),0); sprintf(aa,"MAIL FROM %d",i); abc(aa); MessageBox(0,aa,"MAIL FROM",0); strset(R,' '); i=recv(S,R,10000,0); sprintf(aa,"recv %d R %s",i,R); abc(aa); MessageBox(0,aa,aa,0); strcpy(R,"RCPT TO:<"); strcat(R,bb); strcat(R,">\r\n"); MessageBox(0,R,"Recpt",0); 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); MessageBox(0,aa,aa,0); strcpy(R,"DATA\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); MessageBox(0,aa,aa,0); strcpy(R,"To: aaa.com\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); MessageBox(0,aa,aa,0); strcpy(R,"FROM:"); strcat(R,ii); strcat(R,"\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); MessageBox(0,aa,aa,0); strcpy(R,"SUBJECT: "); strcat(R,ll); strcat(R,"\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strcpy(R,"DATE: 10 Jan 95 13:24 PST\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strcpy(R,"MESSAGE_ID: <123@e.com>\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strcpy(R,kk); strcat(R,"\r\n"); MessageBox(0,R,R,0); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strcpy(R,".\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); strcpy(R,"QUIT\r\n"); i=send(S,R,strlen(R),0); sprintf(aa,"send %d ",i); abc(aa); MessageBox(0,"all","over",0); } STDMETHODIMP CielnkControl::put_Mode(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal,val); lstrcpy(ii,tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_Hlink(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal, val); lstrcpy(bb, tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_Ccopy(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal,val); lstrcpy(jj,tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_Lett(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal,val); lstrcpy(kk,tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_Subject(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal,val); lstrcpy(ll,tempVal); return S_OK; } STDMETHODIMP CielnkControl::put_host(BSTR val) { MAKE_ANSIPTR_FROMWIDE(tempVal,val); lstrcpy(host,tempVal); return S_OK; } IELnk2.def LIBRARY ielnk2 EXPORTS DllRegisterServer EXPORTS DllUnregisterServer EXPORTS DllCanUnloadNow EXPORTS DllGetClassObject IELnk2.Odl #include <olectl.h> [uuid(7d635f22-984a-11cf-a3a9-00a0c9034920),helpstring("Library"),lcid(0x0000),version(1.0)] library ielnkObjects { importlib("STDOLE32.TLB"); importlib(STDTYPE_TLB); [uuid(7e778e42-984a-11cf-a3a9-00a0c9034920),helpstring("Control"),hidden,dual,odl] interface Iielnk : IDispatch { [id(101), propput] HRESULT Hlink([in] BSTR val); // methods [id(108), propput] HRESULT Mode([in] BSTR val); // methods [id(109), propput] HRESULT Ccopy([in] BSTR val); // methods [id(110), propput] HRESULT Lett([in] BSTR val); // methods [id(111), propput] HRESULT Subject([in] BSTR val); // methods [id(112), propput] HRESULT host([in] BSTR val); // methods [id(104)] void Go(void); }; [uuid(804d86c2-984a-11cf-a3a9-00a0c9034920),helpstring("Event"),hidden] dispinterface DielnkEvents { properties: methods: }; [uuid(80ec37c2-984a-11cf-a3a9-00a0c9034920),helpstring("ielnk control")] coclass ielnk { [default] interface Iielnk; [default, source] dispinterface DielnkEvents; }; }; IELnk2.Rc 1 TYPELIB MOVEABLE PURE "ielnk2.TLB" Guids.cpp #define INITGUID // define all the guids. #include "IPServer.H" #include "olectl.h" #include "ielnk2Ifc.H" IELnk2Ifc.h /* This header file machine-generated by mktyplib.exe */ /* Interface to type library: ielnkObjects */ #ifndef _ielnkObjects_H_ #define _ielnkObjects_H_ DEFINE_GUID(LIBID_ielnkObjects,0x7D635F22L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); DEFINE_GUID(IID_Iielnk,0x7E778E42L,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(put_Mode)(THIS_ BSTR val) PURE; STDMETHOD(put_Ccopy)(THIS_ BSTR val) PURE; STDMETHOD(put_Lett)(THIS_ BSTR val) PURE; STDMETHOD(put_Subject)(THIS_ BSTR val) PURE; STDMETHOD(put_host)(THIS_ BSTR val) PURE; STDMETHOD_(void, Go)(THIS) PURE; }; DEFINE_GUID(DIID_DielnkEvents,0x804D86C2L,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,0x80EC37C2L,0x984A,0x11CF,0xA3,0xA9,0x00,0xA0,0xC9,0x03,0x49,0x20); #ifdef __cplusplus class ielnk; #endif #endif IELnk2.htm <HTML> <BODY> <OBJECT id=ielnk1 type="application/x-oleobject" classid="clsid:80EC37C2-984A-11CF-A3A9-00A0C9034920" CODEBASE="http://www.vijaymukhi.com/vmis/IELnk2.Ocx" > <PARAM NAME="hlink" value="http://www.microsoft.com"> </OBJECT><br> From :<br> <INPUT TYPE=TEXT NAME="Mode"><br> To : <br> <INPUT TYPE=TEXT NAME="Target"><br> SMTP Server Address : (default is giasbm01.vsnl.net.in)<br> <INPUT TYPE=TEXT NAME="hostaddr"><br> CC :<br> <INPUT TYPE=TEXT NAME="Ccopy"><br> Subject :<br> <INPUT TYPE=TEXT size=60 NAME="Subj"><br> Enter Text:<br> <textarea name=Lett cols=68 rows=3></textarea><INPUT TYPE=BUTTON VALUE="Send" NAME="BtnGo"> <SCRIPT LANGUAGE="VBSCRIPT"> Sub BtnGo_OnClick ielnk1.mode = Mode.Value ielnk1.hlink = Target.Value ielnk1.ccopy = Ccopy.Value ielnk1.Lett = Lett.Value ielnk1.Subject=Subj.Value ielnk1.host=hostaddr.Value ielnk1.Go() End Sub </SCRIPT> </BODY> </HTML>
Move back to the Vijay Mukhi's Technology Cornucopia Page to learn more about the other new Internet Technologies.