迅雷API介面 附:其中用到了AddTask這個方法,這個方法的參數如下:AddTask("", "另存檔案名稱", "儲存目錄","任務注釋","引用地址","開始模式", "只從原始地址下載","從原始地址下載線程數") 。 參數名含義 pURL目標URL,必須參數 pFileName另存名稱,預設為空白,表示由迅雷處理,選擇性參數 pPath儲存目錄,預設為空白,表示由迅雷處理,選擇性參數 pComments下載注釋,預設為空白,選擇性參數 pReferURL引用頁URL,預設為空白,選擇性參數 nStartMode開始模式,0手工開始,1立即開始,預設為-1,表示由迅雷處理,選擇性參數 nOnlyFromOrigin是否只從原始URL下載,1隻從原始URL下載,0多資源下載,預設為0,選擇性參數 nOriginThreadCount原始地址下載線程數,範圍1-10,預設為-1,表示由迅雷處理,選擇性參數 Public Function 迅雷下載(網址 As String, Optional 儲存路徑 As String, Optional 另存新檔檔案名稱 As String, Optional 下載注釋 As String, Optional 引用頁 As String, Optional 開始模式 As Long = 1, Optional 否只從原始網址下載 As Boolean = False, Optional 原始地址下載線程數 As Long = 5) As Boolean On Error GoTo Err Dim ThunderAgent 'nStartMode開始模式,0手工開始,1立即開始,預設為-1,表示由迅雷處理,選擇性參數 'nOnlyFromOrigin是否只從原始URL下載,1隻從原始URL下載,0多資源下載,預設為0,選擇性參數 'nOriginThreadCount原始地址下載線程數,範圍1-10,預設為-1,表示由迅雷處理,選擇性參數 Set ThunderAgent = CreateObject("ThunderAgent.Agent.1") If ThunderAgent Is Nothing Then GoTo Err Call ThunderAgent.AddTask(網址, 另存新檔檔案名稱, 儲存路徑, 下載注釋, 引用頁, 開始模式, 否只從原始網址下載, 原始地址下載線程數) Call ThunderAgent.CommitTasks2(1) Set ThunderAgent = Nothing 迅雷下載 = True Exit Function Err: 迅雷下載 = False End Function Call 迅雷下載("http://www.baidu.com/index.html", "c:\", "index.html", "http://www.baidu.com/") 首先確保電腦已經安裝訊雷,開啟VS.NET 點擊菜單:項目->添加引用->COM->添加對ThunderAgent 1.0 Type Library的引用 1.建立訊雷調用對象 Private ThunderEng As New THUNDERAGENTLib.Agent'建立訊雷調用對象 ThunderEng.AddTask("", "另存檔案名稱", "儲存目錄","任務注釋","引用地址","開始模式", " 只從原始地址下載","從原始地址下載線程數") '添加下載任務 ThunderEng.CommitTasks()'提交下載任務 2.使用訊雷調用物件查詢下載任務資訊 sFileSize = ThunderEng.GetTaskInfo(txtURL.Text, "FileSize")'擷取下載檔案大小 sDownedSize = ThunderEng.GetTaskInfo(txtURL.Text, "CompletedSize")'擷取已完成大小 sFileName = ThunderEng.GetTaskInfo(txtURL.Text, "FileName")'擷取檔案名稱 二、迅雷平台介面函數定義 獲得資訊 1. BSTR GetInfo(BSTR pInfoName) 功能:獲得迅雷或平台相關資訊 參數: 參數名 含義 pInfoName 資訊名稱,有如下4種 。“ThunderExists”:迅雷是否存在 。“ThunderRunning”:迅雷是否運行 。“ThunderVersion”:迅雷版本號碼 。“PlatformVersion”:平台版本號碼 傳回值:傳回值是字串與參數pInfoName有對應關係 參數 傳回值 “ThunderExists” “true”存在,“false”不存在 “ThunderRunning” “true” 運行中, “false”未運行 “ThunderVersion” 迅雷版本號碼 “x.x.x.x” “PlatformVersion” 平台版本號碼 “x.x.x.x” 2. HRESULT GetInfoStruct(INT pInfo) 功能:擷取迅雷或平台相關全部資訊 參數: 參數名 含義 pInfo 其實是THUNDER_INFO類型的結構指標,調用前把它轉換為INT類型;調用後結構中將填充平台資訊 ,定義如下: typedef struct _THUNDER_INFO { BOOL bThunderExists; BOOL bThunderRunning; CHAR szThunderVersion[32]; CHAR szPlatformVersion[32]; } THUNDER_INFO; 函數調用後,結構中將填充相應的資訊。 傳回值: 0 擷取成功 非0 擷取失敗 任務操作 3. 加入任務 HRESULT AddTask (BSTR pURL, BSTR pFileName = "", BSTR pPath = "", BSTR pComments = "", BSTR pReferURL = "", INT nStartMode = -1, INT nOnlyFromOrigin = 0, INT nOriginThreadCount = -1); 功能: 往平台加入下載任務資訊,此時尚未體現到迅雷中 參數: 參數名 含義 pURL 目標URL,必須參數 pFileName 另存名稱,預設為空白,表示由迅雷處理,選擇性參數 pPath 儲存目錄,預設為空白,表示由迅雷處理,選擇性參數 pComments 下載注釋,預設為空白,選擇性參數 pReferURL 引用頁URL,預設為空白,選擇性參數 nStartMode 開始模式,0手工開始,1立即開始,預設為-1,表示由迅雷處理,選擇性參數 nOnlyFromOrigin 是否只從原始URL下載,1隻從原始URL下載,0多資源下載,預設為0,選擇性參數 nOriginThreadCount 原始地址下載線程數,範圍1-10,預設為-1,表示由迅雷處理,選擇性參數 4. 開始任務 HRESULT CommitTaskss() 功能: 把AddTask所加入的下載任務資訊真正提交到迅雷中進行下載,並從平台中刪除 注意:如果AddTask添加的任務沒有被提交沒有被取消(調用CancelTasks),則Agent對象析構時會 阻塞,所以調用者不應該殘留一些沒有被提交或者取消的任務,以避免指令碼執行者停止回應。 5. 取消任務 HRESULT CancelTasks() 功能: 取消平台中所有由AddTask所加入的下載任務資訊 6. 查詢任務資訊 BSTR GetTaskInfo(BSTR pURL,BSTR pInfoName); 參數: 參數名 含義 pURL 所要查詢的下載URL資訊 pInfoName 狀態名稱,有如下幾種 。“Exists”:pURL是否在迅雷的工作清單 。“Path”:儲存目錄 。“FileName”:檔案名稱 。“FileSize”:檔案大小 。“CompletedSize”:已下載大小 。“Percent”:下載進度 。“Status”:任務狀態 傳回值: 傳回值是字串與參數pInfoName有對應關係 參數 傳回值 “Exists” ”true”存在,”false”不存在 “Path” 儲存目錄,最後帶反斜線\,例:C:\TDDownload\ “FileName” 檔案名稱 “FileSize” 檔案大小,以位元組為單位,0表示大小未知 “CompletedSize” 已下載大小,以位元組為單位 “Percent” 下載進度,帶1位小數,例:70.0 “Status” 任務狀態,有以下6種狀態 。“running”: 運行狀態 。“stopped”: 停止狀態 。“failed”: 失敗狀態 。“success”: 成功狀態 。“creatingfile”:正在建立資料檔案 。“connecting”: 正在串連 7. GetTaskInfoStruct(INT pTaskInfo) 功能:查詢一個任務的所有資訊 參數名 含義 pTaskInfo 其實是THUNDER_TASKINFO類型的結構指標,調用前把它轉換為INT類型;調用後結構中將填充 平台資訊,定義如下: typedef struct _THUNDER_TASKINFO { CHAR szURL[1024]; // 任務URL,預先填充 BOOL bTaskExists; // 任務是否存在,TRUE為存在 CHAR szPath[256]; // 下載的本地儲存路徑 CHAR szFileName[256]; // 本地檔案名稱 ULONGLONG nFileSize; // 檔案大小 ULONGLONG nCompletedSize; // 已完成的大小 CHAR szPercent[16]; // 完成的百分數,用 “56.8”的格式 CHAR szStatus[16]; // 目前狀態,定義同GetTaskInfo函數 } THUNDER_TASKINFO; 調用者先填充結構中的szURL成員,來指定需要查詢的任務的URL,然後等函數返回後就可以從其他成員中 取得該任務的資訊。 本例所有代碼 Imports System Imports System.Text Public Class frmThunderClass frmThunder Private _iStartMode As Integer '訊雷任務下載開始模式 Private ThunderEng As New THUNDERAGENTLib.Agent '建立訊雷調用對象 Private Sub frmThunder_Load()Sub frmThunder_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub btnCancel_Click()Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click Close() End Sub '開始下載任務 Private Sub btnStartDown_Click()Sub btnStartDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartDown.Click Dim iOnlyFromOrigin, iOriginThreadCount As Integer iOnlyFromOrigin = IIf(chkOnlyFromOrigin.Checked = True, 1, 0) iOriginThreadCount = CInt(txtOriginThreadCounts.Text) If chkDefault.Checked Then iOriginThreadCount = -1 End If ThunderEng.AddTask(txtURL.Text, txtSaveAsFileName.Text, txtSaveDir.Text, txtComment.Text, _ txtReferencePage.Text, _iStartMode, iOnlyFromOrigin, iOriginThreadCount) ThunderEng.CommitTasks() Timer1.Enabled = True End Sub Private Sub radMaual_Click()Sub radMaual_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radMaual.Click, radImmediate.Click, radDefault.Click Dim rad As RadioButton = CType(sender, RadioButton) _iStartMode = CInt(rad.Tag) End Sub '當任務開始時定時查詢任務下載資訊 Private Sub Timer1_Tick()Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim sFileSize, sDownedSize, sStatus, sFileName, sPercent As String Try sStatus = ThunderEng.GetTaskInfo(txtURL.Text, "Status") sFileSize = ThunderEng.GetTaskInfo(txtURL.Text, "FileSize") sDownedSize = ThunderEng.GetTaskInfo(txtURL.Text, "CompletedSize") sFileName = ThunderEng.GetTaskInfo(txtURL.Text, "FileName") lblDownedSize.Text = String.Format(lblDownedSize.Tag, sDownedSize) lblFileSize.Text = String.Format(lblFileSize.Tag, sFileSize) lblTaskStatus.Text = String.Format(lblTaskStatus.Tag, sStatus) lblFilename.Text = String.Format(lblFilename.Tag, sFileName) sPercent = ThunderEng.GetTaskInfo(txtURL.Text, "Percent") '擷取下載百分比 lblProgress.Text = String.Format(lblProgress.Tag, sPercent.Remove(3, Len(sPercent) - 3)) Catch ex As Exception End Try End Sub Private Sub chkOnlyFromOrigin_CheckedChanged_1()Sub chkOnlyFromOrigin_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkOnlyFromOrigin.CheckedChanged Panel1.Enabled = chkOnlyFromOrigin.Checked End Sub Private Sub GroupBox1_Enter()Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter End Sub End Class 進入工具--配置--進階,把 通過IE右鍵菜單 “使用迅雷下載”新增工作 這個選項前面的勾去掉。 保持迅雷開啟狀態,這時候執行上面的指令碼,就不會出現那個確認新增工作的對話方塊了。 |