|
进度下载 | 逻辑型 | |
|
网络文件 | 文本型 | | | |
本地文件 | 文本型 | | | | 下载回调 | 子程序指针 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
hOpen | | | |
hOpenUrl | | | |
bool | 逻辑型 | | |
sReadBuffer | 字节型 | | 0 |
lNumberOfBytesRead | | | |
lCount | 长整数型 | | |
hHttpQueryInfo | | | |
sBuffer | 文本型 | | |
FileSize | | | |
handle | | | |
StartTime | | | |
TotalReadSize | | | |
TimeConsuming | 整数型 | | |
lSpeed | 整数型 | | |
进度 | | | |
FileSize =
文件取大小 (网络文件
)
如果真 (FileSize = 0
)
返回 (假)hOpenUrl = FtpOpenFileA (连接句柄, 网络文件, -2147483648, 2, 0)
如果真 (hOpenUrl = 0
)
返回 (假)handle = 打开文件 (本地文件, 6, 1)StartTime =
GetTickCount ()
循环判断首 ()
重定义数组 (sReadBuffer, 假, 2048
)
bool =
InternetReadFile_Byte (hOpenUrl, sReadBuffer, 2048, lNumberOfBytesRead
)
如果 (lNumberOfBytesRead > 0
且 bool
)
重定义数组 (sReadBuffer, 真, lNumberOfBytesRead
)


lCount = lCount + lNumberOfBytesRead

写出数据 (handle, sReadBuffer
)

TotalReadSize = TotalReadSize + lNumberOfBytesRead


TimeConsuming =
GetTickCount () - StartTime


如果真 (TimeConsuming > 0
)


lSpeed = TotalReadSize ÷ TimeConsuming

进度 = 取整 (lCount ÷ FileSize × 100)


如果真 (是否为空 (下载回调
) =
假 或 到整数 (下载回调
) ≠ 0
)

程序_Call (到整数 (下载回调
),
取指针地址_长整数型 (lCount
), lSpeed, 进度, ,
)
处理事件 ()
跳出循环 ()
处理事件 ()
循环判断尾 (lNumberOfBytesRead ≠ 0
)关闭文件 (handle
)InternetCloseHandle (hOpen
)InternetCloseHandle (hOpenUrl
)返回 (真)