五、复制函数F_CONNECT_COPYFILE 需要控件:LISTBOX(3个) 需要INI文件:AUTODOWN.INI global type f_connect_copyfile from function_object end type
forward prototypes global function integer f_connect_copyfile (string as_path, hprogressbar hpb_1, long al_copycount, listbox lb_filecopy1, listbox lb_filecopy2, listbox lb_filecopy3) end prototypes
global function integer f_connect_copyfile (string as_path, hprogressbar hpb_1, long al_copycount, listbox lb_filecopy1, listbox lb_filecopy2, listbox lb_filecopy3); string ls_user string ls_pass string ls_directorya1,ls_directorya2 string ls_directoryb1,ls_directoryb2 string ls_directoryc1,ls_directoryc2
ls_directorya1 = as_path ls_directorya2 = gs_application_path
string ls_filename,ls_file string ls_filename1,ls_filename2
long ll_filecounta1,ll_filecounta2 long ll_filecountb1,ll_filecountb2 long ll_filecountc1,ll_filecountc2
long ll_cnt1 long ll_cnt2 long ll_cnt3 long ll_m long ll_ret = 1
s_WIN32_FIND_DATA ss_file1,ss_file2 long ll_filehandle1,ll_filehandle2
ls_file = ls_directorya1 + '\*.*' If Not lb_filecopy1.DirList(ls_file, 0+1+2+16) Then Return 0 End If hpb_1.position = 0 ll_filecounta1 = lb_filecopy1.TotalItems() ll_m = 0 if al_copycount = 0 then al_copycount = 1 For ll_cnt1 = 1 To ll_filecounta1 ls_File = lb_filecopy1.Text(ll_cnt1) w_autodown_test.st_2.text = ls_file Yield() if left(ls_file,1) = '[' then ls_filename = right(ls_file,len(ls_file) - 1) ls_filename = left(ls_filename,len(ls_filename) - 1) if ls_filename = '..' then continue ls_directoryb1 = ls_directorya1 + '\' + ls_filename ls_directoryb2 = ls_directorya2 + '\' + ls_filename if directoryexists(ls_directoryb2) = false then CreateDirectory(ls_directoryb2) ll_m++ hpb_1.position = ll_m / al_copycount * 100 end if ls_file = ls_directoryb1 + '\*.*' lb_filecopy2.DirList(ls_file, 0+1+2+16) ll_filecountb1 = lb_filecopy2.TotalItems() for ll_cnt2 = 1 to ll_filecountb1 ls_File = lb_filecopy2.Text(ll_cnt2) w_autodown_test.st_2.text = ls_file Yield() if left(ls_file,1) = '[' then ls_filename = right(ls_file,len(ls_file) - 1) ls_filename = left(ls_filename,len(ls_filename) - 1) if ls_filename = '..' then continue ls_directoryc1 = ls_directoryb1 + '\' + ls_filename ls_directoryc2 = ls_directoryb2 + '\' + ls_filename if directoryexists(ls_directoryc2) = false then CreateDirectory(ls_directoryc2) ll_m++ hpb_1.position = ll_m / al_copycount * 100 end if ls_file = ls_directoryc1 + '\*.*' lb_filecopy3.DirList(ls_file, 0+1+2+16) ll_filecountc1 = lb_filecopy3.TotalItems() for ll_cnt3 = 1 to ll_filecountc1 ls_File = lb_filecopy3.Text(ll_cnt3) w_autodown_test.st_2.text = ls_file if ls_file = '[..]' then continue //判断文件,比较和下载 ls_filename1 = ls_directoryc1 + '\' + ls_file ls_filename2 = ls_directoryc2 + '\' + ls_file Yield() if fileexists(ls_filename2) = false then CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 else ll_filehandle1 = FindFirstFileA(ls_filename1,ss_file1) FindClose(ll_filehandle1) ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2) FindClose(ll_filehandle2) choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime) case 0 //两个时间相等,就返回零 case 1 //如lpFileTime2小于lpFileTime1,返回1 //下载 CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 case -1 //如lpFileTime1小于lpFileTime2,返回-1 end choose end if next else //判断文件,比较和下载 ls_filename1 = ls_directoryb1 + '\' + ls_file ls_filename2 = ls_directoryb2 + '\' + ls_file if fileexists(ls_filename2) = false then CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 else ll_filehandle1 = FindFirstFileA(ls_filename1,ss_file1) FindClose(ll_filehandle1) ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2) FindClose(ll_filehandle2) choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime) case 0 //两个时间相等,就返回零 case 1 //如lpFileTime2小于lpFileTime1,返回1 //下载 CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 case -1 //如lpFileTime1小于lpFileTime2,返回-1 end choose end if end if next else //判断文件,比较和下载 ls_filename1 = ls_directorya1 + '\' + ls_file ls_filename2 = ls_directorya2 + '\' + ls_file if fileexists(ls_filename2) = false then CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 else ll_filehandle1 = FindFirstFileA(ls_filename1,ss_file1) FindClose(ll_filehandle1) ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2) FindClose(ll_filehandle2) choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime) case 0 //两个时间相等,就返回零 case 1 //如lpFileTime2小于lpFileTime1,返回1 //下载 choose case lower(ls_file) case 'hbky_autodown.exe' //下载程序 //filedelete(ls_filename2) case 'hbky_autodown.pbd' //case 'autodown.ini' case else CopyFileA(ls_filename1,ls_filename2,0) ll_m++ hpb_1.position = ll_m / al_copycount * 100 end choose case -1 //如lpFileTime1小于lpFileTime2,返回-1 end choose end if end if Next hpb_1.position = 0 return ll_ret end function
|