使用PB调用API自动更新(非FTP模式)(五、复制函数F_CONNECT_COPYFILE)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

五、复制函数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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航