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.