|
进度下载 | 逻辑型 | |
|
网络文件 | 文本型 | | | |
本地文件 | 文本型 | | | | 下载回调 | 子程序指针 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
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 =
InternetReadFileA (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
)返回 (真)|
进度上传 | 逻辑型 | |
|
本地文件 | 文本型 | | | |
远程文件 | 文本型 | | | | 上传回调 | 子程序指针 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
hFile | 整数型 | | |
bool | 逻辑型 | | |
Size | 长整数型 | | |
文件号 | | | |
lBlock | 整数型 | | |
Data | 字节型 | | 1024 |
Written | 整数型 | | |
lCount | 长整数型 | | |
StartTime | 整数型 | | |
TotalReadSize | 整数型 | | |
TimeConsuming | 整数型 | | |
lSpeed | 整数型 | | |
进度 | 整数型 | | |
hFile =
FtpOpenFileA (连接句柄, 远程文件, 1073741824, 2, 0
)
如果真 (hFile = 0
)
返回 (假)文件号 = 打开文件 (本地文件, #读入, #无限制 )Size =
取字节集数据 (到字节集 (取文件长度 (文件号
)),
#长整数型, )StartTime =
GetTickCount ()
变量循环首 (1, Size \ 1024, 1, lBlock
)
读入数据 (文件号, Data
)
bool =
InternetWriteFile (hFile, Data, 1024, Written
)
如果 (bool
且 Written > 0
)
重定义数组 (Data, 假, Written
)

lCount = lCount + Written


TotalReadSize = TotalReadSize + Written


TimeConsuming =
GetTickCount () - StartTime


如果真 (TimeConsuming > 0
)


lSpeed = TotalReadSize ÷ TimeConsuming

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


如果真 (到整数 (上传回调
) ≠ 0
)

程序_Call (到整数 (上传回调
),
内存_指针_取长整数指针 (lCount
), lSpeed, 进度
)



跳出循环 ()
处理事件 ()
变量循环尾 ()关闭文件 (文件号
)InternetCloseHandle (hFile
)返回 (真)变量名 | 类 型 | 静态 | 数组 | 备 注 |
文件号 | 整数型 | | |
文件信息 | 查找的文件信息 | | |
文件大小 | 长整数型 | | |
文件号 =
FtpFindFirstFileA (连接句柄, FTP文件路径, 文件信息, 1, 0
)文件大小 = 文件信息.nFileSizeLow + 文件信息.nFileSizeHigh
InternetCloseHandle (文件号
)返回 (文件大小
)
|
内存_指针_指针到长整数 | 长整数型 | |
|
in_内存指针 | 整数型 | | | |
置入代码 ({ 139, 69, 8, 133, 192, 116, 5, 139, 80, 4, 139, 0, 201, 194, 4, 0
})返回 (0
)|
内存_指针_取长整数指针 | 整数型 | |
|
in_长整数变量 | 长整数型 | | | |
置入代码 ({ 139, 69, 8, 201, 194, 4, 0
})返回 (0
)