XLDownload() Func XLDownload() Local $Dll, $tTaskId, $lTaskId, $aRet $Dll = DllOpen (@ScriptDir & "\XLDownload.dll") ;1、初始化下载引擎 If False == DllCall($Dll, "Bool", "XLInitDownloadEngine") Then MsgBox(16, "Error", "Initialize download engine failed") Return 1 EndIf ;2、启动新任务 $tTaskId = DllStructCreate("long") DllStructSetData($tTaskId, 1, 0) $aRet = DllCall($Dll, "dword", "XLURLDownloadToFile", "wstr", @ScriptDir & "\LiveCapture1.3.1.7z", _ "wstr", "http://livecapture.googlecode.com/files/LiveCapture1.3.1.7z", "wstr", "http://livecapture.googlecode.com", "long*", DllStructGetPtr($tTaskId, 1)) $lTaskId = DllStructGetData($tTaskId, 1) If "0" <> $aRet[0] Then DllCall($Dll, "Bool", "XLUninitDownloadEngine") MsgBox(16, "Error", "Create new task failed, error code") Return 1 EndIf ;3、查询任务状态 Do Local $tStatus, $tFileSize, $tRecvSize, $iProgress Local $iStatus, $iFileSize, $iRecvSize Sleep(1000) $tStatus = DllStructCreate("long") $tFileSize = DllStructCreate("UINT64") $tRecvSize = DllStructCreate("UINT64") DllStructSetData($tStatus, 1, -1) DllStructSetData($tFileSize, 1, 0) DllStructSetData($tRecvSize, 1, 0) $aRet = DllCall($Dll, "DWORD", "XLQueryTaskInfo", "int", $lTaskId, "long*", _ DllStructGetPtr($tStatus, 1), "UINT64*", DllStructGetPtr($tFileSize, 1), "UINT64*", DllStructGetPtr($tRecvSize, 1)) $iStatus = $aRet[2] $iFileSize = $aRet[3] $iRecvSize = $aRet[4] If $aRet[0] = 0 Then If 0 <> $iFileSize Then $iProgress = $iRecvSize / $iFileSize $iProgress *= 100 $iProgress = StringFormat("%.2f%%", $iProgress) ConsoleWrite($iProgress & @CRLF) Else ConsoleWrite("File size is zero" & @CRLF) EndIf If 11 == $iStatus Then MsgBox(0, "Success", "Download successfully") Exit EndIf If 12 == $iStatus Then MsgBox(16, "Failed", "Download failed") Exit EndIf EndIf Until $aRet[0] <> 0 EndFunc