zoukankan      html  css  js  c++  java
  • 迅雷下载开放引擎调用示例

    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
  • 相关阅读:
    数据库知识整理<二>
    数据库知识整理<一>
    面试经历感悟:
    JDK,J2EE,J2SE,J2ME的概念区别是什么呢?
    HTML与JSP页面的区别
    Java并发编程:深入剖析ThreadLocal
    剖析错误原理并解决Hibernate出现No TransactionManagerLookup specified!错误
    MyEclipse中jar包管理技巧
    String,StringBuffer与StringBuilder的区别??
    POJO / JavaBean / Entity Bean
  • 原文地址:https://www.cnblogs.com/Ruiky/p/2487734.html
Copyright © 2011-2022 走看看