迅雷下载开放引擎调用示例

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
原文地址:https://www.cnblogs.com/Ruiky/p/2487734.html