コード例 #1
0
int FTPLogin(const CKBehaviorContext& behcontext)
{
	CKBehavior* beh = behcontext.Behavior;
  	CKContext* ctx = behcontext.Context;

		if( beh->IsInputActive(0)){
			beh->ActivateInput(0,FALSE);
	
			HWND win = (HWND)ctx->GetMainWindow();
			FtpInit(win);
			//HFILE hLogFile =  _lcreat (LOG_FILE, 0);
			//FtpLogTo (hLogFile);
			
			
	
			FtpSetDefaultTimeOut (30);
			FtpSetPassiveMode(TRUE);
			FtpSetAsynchronousMode();
	
			int Port;
			beh->GetInputParameterValue(3,&Port);
			


			XString Host((CKSTRING) beh->GetInputParameterReadDataPtr(0));
			XString User((CKSTRING) beh->GetInputParameterReadDataPtr(1));
			XString Pw((CKSTRING) beh->GetInputParameterReadDataPtr(2));
			
			int Login = FtpLogin(Host.Str(),User.Str(),Pw.Str(),win,0);
			beh->SetOutputParameterValue(0,&Login);
			

			if (Login == 0)beh->ActivateOutput(0);
				else{
					beh->ActivateOutput(2);
					return CKBR_OK;
				}
				return CKBR_ACTIVATENEXTFRAME;
			}

		if( beh->IsInputActive(1)){
			beh->ActivateInput(1,FALSE);

			FtpCloseConnection();
			FtpRelease ();
			beh->ActivateOutput(1);
			return CKBR_OK;
		}
	return CKBR_ACTIVATENEXTFRAME;
}
コード例 #2
0
/* ------------------------------------------------------------- */
int _export PASCAL FAR FtpInit (HWND hParentWnd)
{
LPProcData         pProcData, pLast;
HWND               hFtpWnd;
int                Rc;
    
   if (ToolsLocateProcData () != NULL)  return FTPERR_SESSIONUSED;

   Rc=Tcp4uInit ();
   if (Rc!=TCP4U_SUCCESS)      return FTPERR_WINSOCKNOTUSABLE;  

   if (pFirstProcData==NULL || IsBadWritePtr(pFirstProcData, sizeof *pFirstProcData))
     {                  
       pProcData = pFirstProcData = Calloc (1, sizeof *pProcData);
       if (pProcData==NULL)  return FTPERR_INSMEMORY;
       pProcData->Next = pProcData->Prev = NULL;
     }
   else 
     {
       for ( pLast=pFirstProcData ; pLast->Next!=NULL ; pLast= pLast->Next );
       pLast->Next = pProcData = Calloc (1, sizeof *pProcData);
       if (pProcData==NULL)  return FTPERR_INSMEMORY;
       pProcData->Prev = pLast;
       pProcData->Next = NULL;
     }

   /* Get task information */      
   pProcData->hInstance       = GetTaskInstance (hParentWnd); /* port32.c */
   /* fIdentifyThread callback sur l'appelant, nThread sa valeur */
   pProcData->fIdentifyThread = GetCurrentThreadId;
   pProcData->nThreadIdent    = GetCurrentThreadId();


   /* est-ce que la fenetre interne a deja ete creee */
   if (pProcData==pFirstProcData)
   {WNDCLASS           wndClass;
	  /* lstrcpy (szFTPDLL_CLASSNAME, FTP4W_CLASS_NAME); */
	  /* EnregistreClasse : Enregistre la classe de notre fenêtre     */
	  memset (& wndClass, 0, sizeof wndClass); 
	  wndClass.lpszClassName = FTP4W_CLASS_NAME;
	  wndClass.hInstance     = pProcData->hInstance;
	  wndClass.lpfnWndProc   = (WNDPROC) DLLWndProc;
      Rc = RegisterClass (&wndClass);
	  if (! Rc)   { FtpRelease();   return FTPERR_CANTCREATEWINDOW; } 
	}
#ifdef UNE_FENETRE   
   if (pProcData==pFirstProcData)
   {
#endif   
     /* création de la fenêtre */    
      hFtpWnd=CreateWindow (FTP4W_CLASS_NAME,/* window class name        */
                          "", 0,             /* window title, style      */
                          0, 0, 0, 0,        /* x, y, cx, xy             */
                          hParentWnd,        /* a parent for this window */
                          NULL,              /* use the class menu       */
                          pProcData->hInstance, /* who created this wndw */
                          NULL  );           /* no parms to pass on      */
	  if (hFtpWnd==NULL)   
      {  
         FtpRelease ();
         return FTPERR_CANTCREATEWINDOW;
      }
	  pProcData->hFtpWnd         = hFtpWnd;          
#ifdef UNE_FENETRE   
   } /* pas d'instance deja cree -> creation de la fenetre interne */
	   /* si la fenetre interne existe, on la reutilise simplement */ 
   else
	   pProcData->hFtpWnd = pFirstProcData->hFtpWnd;
#endif

   /* On remplit les infos relatives à la tâche */  
   pProcData->hParentWnd      = hParentWnd;
   /* renseignements FTP : Pas de session existante */
   pProcData->ftp.ctrl_socket     = INVALID_SOCKET;
   pProcData->ftp.data_socket     = INVALID_SOCKET;
   /* juste pour noyer l'appel */
   pProcData->ftp.bVerbose        = Protection (); /* Protection rend FALSE */
   pProcData->ftp.nTimeOut        = FTP_DEFTIMEOUT;
   pProcData->ftp.hLogFile        = HFILE_ERROR;
   pProcData->ftp.bPassif         = FALSE;
   pProcData->ftp.nPort           = FTP_DEFCTRLPORT;
   /* renseignement fichier */
   pProcData->File.bAborted   = FALSE;
   pProcData->File.bNotify    = FALSE;
   pProcData->File.bAsyncMode = TRUE;
   pProcData->File.hf         = HFILE_ERROR;
   pProcData->File.nAsyncAlone= FTP_DEFASYNCALONE;
   pProcData->File.nAsyncMulti= FTP_DEFASYNCMULTI;
   pProcData->File.nDelay     = FTP_DEFDELAY;
return FTPERR_OK;
};  /* FtpInit */