PB automatically updates using Wininet's FTP mode (three, the number of files to update)

xiaoxiao2021-03-06  67

Third, obtain the number of files to update (just to handle the secondary directory) Global Type f_connect_ftpcount from function_ObjectTend Type

Forward PrototypeSGLobal Function Integer F_Connect_ftpcount () end prototypes

Global function integer f_connect_ftpcount (); do while yield () loop

String ls_directorya1, ls_directorya2

Ls_directorya2 = GS_Application_Path

String ls_directoryb1, ls_directoryb2string ls_filename1, ls_filename2

Long ll_hretlong ll_hftp1long ll_hftp2long ll_fftp1long ll_fftp2integer li_retlong ll_filehandle1, ll_filehandle2long ll_k

Boolean LB_Success

S_WIN32_FIND_DATA SS_FILE1, SS_FILE2

LI_RET = f_connect_ftpserver () if Li_ret = -1 Then Return -1

ll_hret = InternetOpenA (gs_application_name, 0, '', '', 0) choose case li_ret case 1 ls_directorya1 = GS_FTPDIR1 ll_hftp1 = InternetConnectA (ll_hret, GS_FTPSERVER1, GL_FTPLOGINPORT1, GS_FTPLOGINUSER1, GS_FTPLOGINPASS1,1,0,0) case 2 ls_directorya1 = GS_FTPDIR2 ll_hftp1 = InternetConnectA (ll_hret, GS_FTPSERVER2, GL_FTPLOGINPORT2, GS_FTPLOGINUSER2, GS_FTPLOGINPASS2,1,0,0) case 3 ls_directorya1 = GS_FTPDIR3 ll_hftp1 = InternetConnectA (ll_hret, GS_FTPSERVER3, GL_FTPLOGINPORT3, GS_FTPLOGINUSER3, GS_FTPLOGINPASS3,1,0,0) case else InternetCloseHandle (ll_hret) ; return -1end chooselb_success = FtpSetCurrentDirectoryA (ll_hftp1, ls_directorya1) if not lb_success then InternetCloseHandle (ll_hret); InternetCloseHandle (ll_hftp1); return -1end IFll_fftp1 = FtpFindFirstFileA (ll_hftp1, '', ss_file1,0,0) if ll_fftp1 = 0 then InternetCloseHandle (ll_hret); InternetCloseHandle (LL_HFTP1); InternetCloseHandle (LL_FFTP1); Return 0nd ifll_k = 0if SS_FILE1.DWFILEATTRIBUTES = 16 THEN LS_DIRECTORYB1 = Ls_Directorya1 '/' SS_ file1.cfilename ls_directoryb2 = ls_directorya2 '/' ss_file1.cfilename if directoryexists (ls_directoryb2) = false then ll_k end if choose case li_ret case 1 ll_hftp2 = InternetConnectA (ll_hret, GS_FTPSERVER1, GL_FTPLOGINPORT1, GS_FTPLOGINUSER1, GS_FTPLOGINPASS1,1,0,0) case 2 ll_hftp2 = InternetConnectA (ll_hret, GS_FTPSERVER2, GL_FTPLOGINPORT2, GS_FTPLOGINUSER2, GS_FTPLOGINPASS2,1,0,0) case 3 ll_hftp2 = InternetConnectA (ll_hret, GS_FTPSERVER3, GL_FTPLOGINPORT3, GS_FTPLOGINUSER3, GS_FTPLOGINPASS3,1,0,0) end choose lb_success =

FtpSetCurrentDirectoryA (ll_hftp2, ls_directoryb1) if lb_success then ll_fftp2 = FtpFindFirstFileA (ll_hftp2, '', ss_file1,0,0) ls_filename2 = ls_directoryb2 '/' ss_file1.cfilename if fileexists (ls_filename2) = false then ll_k else ll_filehandle2 = FindFirstFileA (ls_filename2 , ss_file2) FindClose (ll_filehandle2) choose case CompareFileTime (ss_file1.ftlastwritetime, ss_file2.ftlastwritetime) case 0 // two equal time, zero is returned as lpFileTime2 // Case 1 is less than lpFileTime1, 1 // returns download ll_k case -1 / / as is less than lpFileTime1 lpFileTime2, return -1 end choose end if do while InternetFindnextFileA (ll_fftp2, ss_file1) yield () ls_filename2 = ls_directoryb2 '/' ss_file1.cfilename if fileexists (ls_filename2) = false then ll_k else ll_filehandle2 = FindFirstFileA (ls_filename2 , SS_FILE2) CHOOSE CASE COSE COSEFILETIME (SS_FILE1.FTLASTWRITIME, SS_FILE2.FTLASTWRITIME, SS_FILE2.FTLASTWRITIME) CASE 0 // Two times, return zero case 1 // If lpfiletime2 is less than lpfiletime1, return 1 // download ll_k case -1 // lpFileTime1 as less than lpFileTime2, return -1 end choose end if loop InternetCloseHandle (ll_hftp2); InternetCloseHandle (ll_fftp2); end ifelse ls_filename2 = ls_directorya2 '/' ss_file1.cfilename if fileexists (ls_filename2) = false then ll_k else ll_filehandle2 = FindFirstFileA (ls_filename2, ss_file2) FindClose (ll_filehandle2) choose case CompareFileTime (ss_file1.ftlastwritetime, ss_file2.ftlastwritetime) case 0 // two equal time, zero is returned as lpFileTime2 case 1 // less than lpFileTime1, Return 1 // Download LL_K

The case -1 // lpFileTime1 less than lpFileTime2, return -1 end choose end ifend ifdo while InternetFindnextFileA (ll_fftp1, ss_file1) yield () if ss_file1.dwFileAttributes = 16 then ls_directoryb1 = ls_directorya1 '/' ss_file1.cfilename ls_directoryb2 = ls_directorya2 '/' ss_file1.cfilename if directoryexists (ls_directoryb2) = false then ll_k end if choose case li_ret case 1 ll_hftp2 = InternetConnectA (ll_hret, GS_FTPSERVER1, GL_FTPLOGINPORT1, GS_FTPLOGINUSER1, GS_FTPLOGINPASS1,1,0,0) case 2 ll_hftp2 = InternetConnectA (ll_hret , GS_FTPSERVER2, GL_FTPLOGINPORT2, GS_FTPLOGINUSER2, GS_FTPLOGINPASS2,1,0,0) case 3 ll_hftp2 = InternetConnectA (ll_hret, GS_FTPSERVER3, GL_FTPLOGINPORT3, GS_FTPLOGINUSER3, GS_FTPLOGINPASS3,1,0,0) end choose lb_success = FtpSetCurrentDirectoryA (ll_hftp2, ls_directoryb1) if lb_success then LL_FFTP2 = ftpfindfirstfilea (LL_HFTP2, '', SS_FILE1, 0) LS_FILENAME2 = LS_DIRECTORYB2 '/' SS_FILE1.CFileName if FileExists (ls_filename2) = FALSE THEN LL_K E lse ll_filehandle2 = FindFirstFileA (ls_filename2, ss_file2) FindClose (ll_filehandle2) choose case CompareFileTime (ss_file1.ftlastwritetime, ss_file2.ftlastwritetime) case is equal to two time 0 //, // returns zero as Case 1 is less than lpFileTime2 lpFileTime1, return 1 // Download ll_k case -1 // lpFileTime1 as less than lpFileTime2, return -1 end choose end if do while InternetFindnextFileA ls_filename2 (ll_fftp2, ss_file1) yield () = ls_directoryb2 '/' ss_file1.cfilename if fileexists (ls_filename2) = false then ll_k Else Ll_fileHandle2 =

FindFirstFileA (ls_filename2, ss_file2) FindClose (ll_filehandle2) choose case CompareFileTime (ss_file1.ftlastwritetime, ss_file2.ftlastwritetime) case is equal to two time 0 //, // returns zero as Case 1 is less than lpFileTime2 lpFileTime1, 1 // returns download ll_k case The lpFileTime1 less than -1 // lpFileTime2, return -1 end choose end if loop InternetCloseHandle (ll_hftp2); InternetCloseHandle (ll_fftp2); end if else ls_filename2 = ls_directorya2 '/' ss_file1.cfilename if fileexists (ls_filename2) = false then ll_k else ll_filehandle2 = FindFirstFileA (ls_filename2, ss_file2) FindClose (ll_filehandle2) choose case CompareFileTime (ss_file1.ftlastwritetime, ss_file2.ftlastwritetime) case is equal to two time 0 //, // returns zero as Case 1 is less than lpFileTime2 lpFileTime1, return 1 // Download ll_k case -1 // lpFileTime1 as less than lpFileTime2, return -1 end choose end if end ifloopInternetCloseHandle (ll_hret); InternetCloseHandle (ll_hftp1); InternetCloseHandle (ll_fftp1); return ll_kend function

转载请注明原文地址:https://www.9cbs.com/read-88327.html

New Post(0)