www.pudn.com > pop3.zip > 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#include 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,"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;} char ccc[100]; 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]; 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); 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) { BSTR pq=BSTRFROMANSI(nc); *val = pq; return S_OK; }