使用PB调用API自动更新(非FTP模式)(五、复制函数F_CONNECT_COPYFILE)
发表于:2007-07-02来源:作者:点击数:
标签:
五、复制函数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_
五、复制函数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
原文转自:http://www.ltesting.net