Foxwx微信公众号管理软件---同心软件 -以高级编程语言进行微信公众号管理,我们一直在努力!

行者孙,进度下载文件

PUBLIC _form1

_form1=CREATEOBJECT("form1")

_form1.SHOW

RETURN


DEFINE CLASS form1 AS FORM

TOP = 90

LEFT = 294

HEIGHT = 183

WIDTH = 343

DOCREATE = .T.

CAPTION = "行者示例-文件下载"

BACKCOLOR =RGB( 153,153,153)

NAME = "form1"

PROCEDURE DOWN

X=ALLTRIM(STR(PD*102400))

IF X==''

X='0'

ENDI

Y=ALLTRIM(STR((PD+1)*102400-1))

f_Header='Range: bytes='+X+'-'+Y

IF PD>f_cs

f_header='Range: bytes='+X+'-'

THISFORM.inet2.execute(f_url,'get',,f_Header)

ELSE

THISFORM.inet2.execute(f_url,'get',,f_header)

ENDIF

ENDPROC

PROCEDURE INIT

THIS.ADDOBJECT("Dataenvironment","_classname1")

THIS.ADDOBJECT("Inet1","_classname2")

THIS.ADDOBJECT("Command3","_classname3")

THIS.ADDOBJECT("inet2","_classname4")

THIS.ADDOBJECT("Label2","_classname5")

THIS.ADDOBJECT("Shape1","_classname6")

THIS.ADDOBJECT("Shape2","_classname7")

THIS.ADDOBJECT("Shape3","_classname8")

THIS.ADDOBJECT("Label5","_classname9")

THIS.ADDOBJECT("Label6","_classname10")

THIS.ADDOBJECT("Label1","_classname11")

THIS.ADDOBJECT("Label3","_classname12")

THIS.ADDOBJECT("Label4","_classname13")

THIS.ADDOBJECT("Timer1","_classname14")

PUBLIC f_url,f_size,f_cs,f_sy,f_name,PD,h,f_header,X,Y,JS

THISFORM.shape3.WIDTH=0

ENDPROC

ENDDEFINE

DEFINE CLASS _classname1 AS DATAENVIRONMENT

VISIBLE=.T.

TOP = 0

LEFT = 0

WIDTH = 0

HEIGHT = 0

DATASOURCE = .NULL.

NAME = "Dataenvironment"

ENDDEFINE

DEFINE CLASS _classname2 AS OLECONTROL

VISIBLE=.T.

COMMENT = ""

TOP = 15

LEFT = 127

HEIGHT = 24

WIDTH = 38

NAME = "Inet1"

OLECLASS="InetCtls.Inet.1"

PROCEDURE StateChanged

*** ActiveX 控件事件 ***

LPARAMETERS state

DO CASE

CASE state=1

THISFORM.label1.CAPTION='下载状态:正在连接服务器下载地址.....'

CASE state=2

THISFORM.label1.CAPTION='连接服务器成功'

CASE state=3

THISFORM.label1.CAPTION='该控件正在与主机连接。 '

CASE state=4

THISFORM.label1.CAPTION='该控件已与主机连接成功。'

CASE state=5

THISFORM.label1.CAPTION='该控件正在向主机发送请求。'

CASE state=6

THISFORM.label1.CAPTION='该控件发送请求已成功。'

CASE state=7

THISFORM.label1.CAPTION='该控件正在接收主机的响应。 '

CASE state=8

THISFORM.label1.CAPTION='该控件已成功地接收到主机的响应。 '

CASE state=9

THISFORM.label1.CAPTION='该控件正在解除与主机的连接。'

CASE state=10

THISFORM.label1.CAPTION='该控件已成功地与主机解除了连接。 '

CASE state=11

THISFORM.label1.CAPTION='下载状态:与主机通讯时出现了错误!'

CASE state=12

THISFORM.label1.CAPTION='下载状态:正在下载该文件.....'

f_size=VAL(THISFORM.inet1.getheader('Content-Length'))

THISFORM.label2.CAPTION='文件大小:'+ALLTRIM(STR(f_size))+' byte'

f_cs=INT(f_size/102400)

f_sy=MOD(f_size,102400)

h=FCREATE(f_name)


THISFORM.timer1.INTERVAL=1000

PD=0

THISFORM.DOWN()

THISFORM.inet1.OBJECT.CANCEL

ENDC

ENDPROC

ENDDEFINE


DEFINE CLASS _classname3 AS COMMANDBUTTON

VISIBLE=.T.

TOP = 140

LEFT = 150

HEIGHT = 25

WIDTH = 60

CAPTION = "开始下载"

NAME = "Command3"

PROCEDURE CLICK

f_url='http://dl_dir.qq.com/qqfile/tm/TM2009Beta3.4_chs.exe'&&被下载文件地址

f_name='F:\TM2009Beta3.4_chs.exe'&&被存放到本地的文件名

THISFORM.shape3.WIDTH=0

JS=0&&下载秒数计数

THISFORM.inet1.execute(f_url)

ENDPROC

ENDDEFINE


DEFINE CLASS _classname4 AS OLECONTROL

VISIBLE=.T.

COMMENT = ""

TOP = 15

LEFT = 178

HEIGHT = 24

WIDTH = 38

NAME = "inet2"

OLECLASS="InetCtls.Inet.1"

PROCEDURE StateChanged

*** ActiveX 控件事件 ***

LPARAMETERS state

IF state=12

IF PD>=f_cs

st=THISFORM.inet2.GetChunk(f_sy,1)

=FWRITE(h,st)

=FCLOSE(h)

THISFORM.timer1.INTERVAL=0

THISFORM.label6.CAPTION='100%'

THISFORM.CAPTION='文件下载完毕'

THISFORM.label1.CAPTION='下载状态:'

THISFORM.label2.CAPTION='下载状态:'

=MESSAGEBOX('下载完毕')

*!*    thisform.inet1.object.Cancel

ELSE

st=THISFORM.inet2.GetChunk(102400,1)

PD=PD+1

=FWRITE(h,st)

THISFORM.shape3.WIDTH=(PD/f_cs)*246

THISFORM.DOWN()

ENDI

ENDI

ENDPROC

ENDDEFINE


DEFINE CLASS _classname5 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

FONTSIZE = 11

BACKSTYLE = 0

CAPTION = "文件大小:"

HEIGHT = 19

HELPCONTEXTID = 1

LEFT = 7

TOP = 31

WIDTH = 77

NAME = "Label2"

ENDDEFINE

DEFINE CLASS _classname6 AS SHAPE

VISIBLE=.T.

TOP = 105

LEFT = 76

HEIGHT = 17

WIDTH = 248

BACKSTYLE = 0

CURVATURE = 10

NAME = "Shape1"

ENDDEFINE

DEFINE CLASS _classname7 AS SHAPE

VISIBLE=.T.

TOP = 104

LEFT = 75

HEIGHT = 17

WIDTH = 248

BACKSTYLE = 0

CURVATURE = 10

BORDERCOLOR =RGB( 255,255,255)

NAME = "Shape2"

ENDDEFINE

DEFINE CLASS _classname8 AS SHAPE

VISIBLE=.T.

TOP = 106

LEFT = 77

HEIGHT = 15

WIDTH = 246

BACKSTYLE = 1

BORDERSTYLE = 0

BORDERWIDTH = 0

CURVATURE = 10

BACKCOLOR =RGB( 128,128,128)

NAME = "Shape3"

ENDDEFINE

DEFINE CLASS _classname9 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

FONTSIZE = 11

BACKSTYLE = 0

CAPTION = "下载进度:"

HEIGHT = 19

LEFT = 7

TOP = 105

WIDTH = 77

NAME = "Label5"

ENDDEFINE

DEFINE CLASS _classname10 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

BACKSTYLE = 0

CAPTION = "%"

HEIGHT = 16

LEFT = 204

TOP = 106

WIDTH = 8

NAME = "Label6"

ENDDEFINE

DEFINE CLASS _classname11 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

FONTSIZE = 11

BACKSTYLE = 0

CAPTION = "下载状态:"

HEIGHT = 19

LEFT = 7

TOP = 7

WIDTH = 77

NAME = "Label1"

ENDDEFINE

DEFINE CLASS _classname12 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

FONTSIZE = 11

BACKSTYLE = 0

CAPTION = "下载速率:"

HEIGHT = 19

LEFT = 7

TOP = 56

WIDTH = 77

NAME = "Label3"

ENDDEFINE

DEFINE CLASS _classname13 AS LABEL

VISIBLE=.T.

AUTOSIZE = .T.

FONTSIZE = 11

BACKSTYLE = 0

CAPTION = "剩余时间:"

HEIGHT = 19

LEFT = 7

TOP = 80

WIDTH = 77

NAME = "Label4"

ENDDEFINE

DEFINE CLASS _classname14 AS TIMER

VISIBLE=.T.

TOP = 27

LEFT = 231

HEIGHT = 23

WIDTH = 23

INTERVAL = 0

NAME = "Timer1"

PROCEDURE TIMER

JS=JS+1

sl=ALLTRIM(STR(PD*102400/1024/JS,6,2))

THISFORM.label3.CAPTION='下载速率:'+sl+' KB/S'

THISFORM.label4.CAPTION='剩余时间:'+ALLTRIM(STR((f_size-PD*102400)/1024/VAL(sl)))+' 秒'

THISFORM.label6.CAPTION=ALLTRIM(STR((PD*102400/f_size)*100,5,2))+'%'

THISFORM.CAPTION='行者示例-文件下载     '+ALLTRIM(STR((PD*102400/f_size)*100,5,2))+'%'

ENDPROC

ENDDEFINE


Tags:

发布: admin 分类: 程序开发 评论: 0 浏览: 104
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。