迅雷:自动化下载文件

迅雷平台接口函数定义

GetInfo

        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”

GetInfoStruct

        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 获取失败

AddTask

        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,表示由迅雷处理,可选参数

CommitTaskss

        HRESULT CommitTaskss()

  功能:把AddTask所加入的下载任务信息真正提交到迅雷中进行下载,并从平台中删除

  注意:如果AddTask添加的任务没有被提交没有被取消(调用CancelTasks),则Agent对象析构时会阻塞,所以调用者不应该残留一些没有被提交或者取消的任务,以避免脚本执行者停止响应。

CancelTasks

  HRESULT CancelTasks()

  功能:取消平台中所有由AddTask所加入的下载任务信息

GetTaskInfo

        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”: 正在连接

GetTaskInfoStruct

        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 '创建讯雷调用对象

    Sub frmThunder_Load(ByVal sender As System.Object, _ 
                        ByVal e As System.EventArgs) 
                        Handles MyBase.Load
    End Sub

    Sub btnCancel_Click(ByVal sender As System.Object, _
                        ByVal e As System.EventArgs)
                        Handles btnCancel.Click
        Close()
    End Sub

'开始下载任务
    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

    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

    '当任务开始时定时查询任务下载信息
    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

    Sub chkOnlyFromOrigin_CheckedChanged_1(ByVal sender As System.Object, 
                                           ByVal e As System.EventArgs) 
                                          Handles chkOnlyFromOrigin.CheckedChanged
        Panel1.Enabled = chkOnlyFromOrigin.Checked
    End Sub

    Sub GroupBox1_Enter(ByVal sender As System.Object, 
                        ByVal e As System.EventArgs)
                        Handles GroupBox1.Enter
    End Sub
End Class
'进入工具--配置--高级,把 通过IE右键菜单 “使用迅雷下载”添加任务 这个选项前面的勾去掉。
'保持迅雷开启状态,这时候执行上面的脚本,就不会出现那个确认添加任务的对话框了。

VBS自定义函数

'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
    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

CommitTasks?CommitTasks2?

参考

迅雷自带脚本

getAllurl.htm

<script language="VBScript">

Sub OnContextMenu()
	on error resume next
	set ThunderAgent = CreateObject("ThunderAgent.Agent.1")
	if err.number <> 0 then
		On Error Goto 0
		set ThunderAgent = CreateObject("ThunderAgent.Agent64.1")
	end if 

	If ThunderAgent.ConfirmRectMode = 0 Then
		set links = external.menuArguments.document.links
		set images = external.menuArguments.document.images
		set strCharSet = external.menuArguments.document.charset
		link_count = links.length
		image_count = images.length
		
		On Error Resume Next

		strDownloadPage = external.menuArguments.document.url
		set theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl")
		if TypeName(theDownloadPage) <> "Nothing" then
			strDownloadPage = theDownloadPage.value
		end if

		strStatPage = ""
		set theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl")
		if TypeName(theStatPage) <> "Nothing" then
			strStatPage = theStatPage.value
		end if

		On Error Goto 0

		if strStatPage <> "" then
			for i = 0 to link_count-1
				On Error Resume Next
				call ThunderAgent.AddTask12(links(i).href, "", "", links(i).innerText, strDownloadPage, strCharset, -1, 0, -1,  external.menuArguments.document.cookie, "", strStatPage, 0, "rightup")
				if err.number <> 0 then
					On Error Goto 0
					call ThunderAgent.AddTask4(links(i).href, "", "", links(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", strStatPage)
				end if
				On Error Resume Next
			next 
			
			for i = 0 to image_count-1
				On Error Resume Next	
				call ThunderAgent.AddTask12(images(i).src, "", "", images(i).innerText, strDownloadPage, strCharset, -1, 0, -1,  external.menuArguments.document.cookie, "", strStatPage, 0, "rightup")
				if err.number <> 0 then
					On Error Goto 0
					call ThunderAgent.AddTask4(images(i).src, "", "", images(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", strStatPage)
				end if
				On Error Resume Next
			next
		else
			for i = 0 to link_count-1
				On Error Resume Next	
				call ThunderAgent.AddTask12(links(i).href, "", "", links(i).innerText, strDownloadPage, strCharset, -1, 0, -1,  external.menuArguments.document.cookie, "", "", 0, "rightup")
				if err.number <> 0 then
					On Error Goto 0
					call ThunderAgent.AddTask4(links(i).href, "", "", links(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", "")
				end if
				On Error Resume Next
			next 
			
			for i = 0 to image_count-1
				On Error Resume Next
				call ThunderAgent.AddTask12(images(i).src, "", "", images(i).innerText, strDownloadPage, strCharset, -1, 0, -1,  external.menuArguments.document.cookie, "", "", 0, "rightup")
				if err.number <> 0 then
					On Error Goto 0
					call ThunderAgent.AddTask4(images(i).src, "", "", images(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", "")
				end if
				On Error Resume Next
			next
		end if

		call ThunderAgent.CommitTasks2(1)
	Else
		ThunderAgent.AddTaskInRect()
	End If

	set ThunderAgent = nothing
end sub

call OnContextMenu()

</script>

geturl.htm

<script language="javascript">


function AddLink(Url,Info,Location,strCID,strStatUrl,strCookie,strCharset)
{
	if (Url != "")
	{
		if (Info == "")
		{
			Info = "unknown";
		}

		try
		{
			var ThunderAgent = new ActiveXObject("ThunderAgent.Agent");
		}
		catch(e)
		{
			ThunderAgent = new ActiveXObject("ThunderAgent.Agent64");
		}

		try
		{
			ThunderAgent.AddTask12(Url, "", "", Info, Location, strCharset, -1, 0, -1,  strCookie, strCID, strStatUrl, 0, "rightup");
		}
		catch(e)
		{
			try
			{
				ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1,  strCookie, strCID, strStatUrl, 1, "", -1);
			}	
			catch(e)
			{
				ThunderAgent.AddTask2(Url, "", "", Info, Location, -1, 0, -1,  strCookie);
			}
		}

		ThunderAgent.CommitTasks2(1);
	}
}

function OnContextMenu()
{
	var srcEvent = external.menuArguments.event;
	var EventElement = external.menuArguments.event.srcElement;
	
	if(typeof(EventElement) == "undefined")
	{
		if(typeof(srcEvent.clientX) == "undefined")
		{
			EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.pointerX, srcEvent.pointerY );
		}
		else
		{
			EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY );
		}
	}
		
		

	var strDownloadPage = external.menuArguments.location;
	var theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl");
	var strCharSet = external.menuArguments.document.charset;
	if (theDownloadPage != null)
	{
		strDownloadPage = theDownloadPage.value;
	}
	

	var strStatPage = "";
	var theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl");
	if (theStatPage != null)
	{
		strStatPage = theStatPage.value;
	}

	var strCID = ""
	var theCID = external.menuArguments.document.getElementById("thunder_cid");
	if (theCID != null)
	{
		strCID = theCID.value;
	}
	var srcAnchor;

	if (srcEvent.type == "MenuExtAnchor")
	{

		srcAnchor = EventElement;

		do
		{ 
			srcAnchor=srcAnchor.parentElement;
		}while(typeof(srcAnchor)=="HTMLAnchorElement");
		
		AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
	}
	else if (srcEvent.type == "MenuExtImage")
	{
		if (typeof(EventElement) == "HTMLAreaElement")
		{
			AddLink(EventElement.href,EventElement.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
		}
		else 
		{
			var srcImage = EventElement;
			var srcAnchor = srcImage.parentElement;
			do
			{ 
				srcAnchor=srcAnchor.parentElement;
				if (typeof(srcAnchor) == "undefined")
				{
					AddLink(srcImage.href,srcImage.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
					return;
				}
			}while(typeof(srcAnchor) == "HTMLAnchorElement");
			AddLink(srcAnchor.href,srcImage.Alt,strDownloadPage, strCID, strStatPage,strCharSet);
		}
	}	
	else if (srcEvent.type == "MenuExtUnknown")
	{
	srcAnchor = EventElement;
	if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	    {
         try
		{
		    AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
		}
		catch(e)
		{
		   alert("网页数据格式错误,无法下载,请尝试用鼠标左键点击下载。");
		}
	    }
	    else
	    {
	        while(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() != "a")
	        {
	            srcAnchor = srcAnchor.parentElement;
	            if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	            {
	                AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
	                return;
	            }
	        }
			
	        if(EventElement != null && EventElement.tagName != null)
	        {
	            AddLink(EventElement.href,EventElement.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie,strCharSet);
	        }
	        else
	        {
	            alert("无法识别的超级链接信息");
	        }
	    }
	}
	else
	{
		
	}
}
OnContextMenu();
</script>

minixlgetAllurl.htm

<script language="VBScript">

Sub OnContextMenu()
	set ThunderAgent = CreateObject("ThunderAgent.Agent.1")

	If ThunderAgent.ConfirmRectMode = 0 Then
	set links = external.menuArguments.document.links
	set images = external.menuArguments.document.images
	link_count = links.length
	image_count = images.length

	strDownloadPage = external.menuArguments.document.url
	set theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl")
	if TypeName(theDownloadPage) <> "Nothing" then
		strDownloadPage = theDownloadPage.value
	end if

	strStatPage = ""
	set theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl")
	if TypeName(theStatPage) <> "Nothing" then
		strStatPage = theStatPage.value
	end if


	if strStatPage <> "" then
		for i = 0 to link_count-1
			call ThunderAgent.AddTask5(links(i).href, "", "", links(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", strStatPage, 1)
		next 
		
		for i = 0 to image_count-1
			call ThunderAgent.AddTask5(images(i).src, "", "", images(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", strStatPage, 1)
		next
	else
		for i = 0 to link_count-1
			call ThunderAgent.AddTask5(links(i).href, "", "", links(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", "", 1)
		next 
		
		for i = 0 to image_count-1
			call ThunderAgent.AddTask5(images(i).src, "", "", images(i).innerText, strDownloadPage, -1, 0, -1, external.menuArguments.document.cookie, "", "", 1)
		next
	end if

	call ThunderAgent.CommitTasks5(1, 1)
	Else
		ThunderAgent.AddTaskInRect2()
	End If

	set ThunderAgent = nothing
end sub

call OnContextMenu()

</script>

minixlgeturl.htm

<script language="javascript">


function AddLink(Url,Info,Location,strCID,strStatUrl,strCookie)
{
	if (Url != "")
	{
		if (Info == "")
		{
			Info = "unknown";
		}
		var ThunderAgent = new ActiveXObject("ThunderAgent.Agent");
		
		if (strCID != "")
		{
			if (strStatUrl != "")
			{
				ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1,  strCookie, strCID, strStatUrl, 1, "", -1);
			}
			else
			{
				ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1,  strCookie, strCID, "", 1, "", -1);
			}
		}
		else
		{
			ThunderAgent.AddTask5(Url, "", "", Info, Location,-1,0,-1,strCookie,"","", 1, "", -1);
		}
		ThunderAgent.CommitTasks5(1, 1);
	}
}

function OnContextMenu()
{
	var srcEvent = external.menuArguments.event;
	var EventElement;
	
	if(typeof(srcEvent.clientX) == "undefined")
	{
		EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.pointerX, srcEvent.pointerY );
	}
	else
	{
		EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY );
	}
		
		

	var strDownloadPage = external.menuArguments.location;
	var theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl");
	
	if (theDownloadPage != null)
	{
		strDownloadPage = theDownloadPage.value;
	}
	

	var strStatPage = "";
	var theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl");
	if (theStatPage != null)
	{
		strStatPage = theStatPage.value;
	}

	var strCID = ""
	var theCID = external.menuArguments.document.getElementById("thunder_cid");
	if (theCID != null)
	{
		strCID = theCID.value;
	}
	var srcAnchor;

	if (srcEvent.type == "MenuExtAnchor")
	{

		srcAnchor = EventElement;

		do
		{ 
			srcAnchor=srcAnchor.parentElement;
		}while(typeof(srcAnchor)=="HTMLAnchorElement");
		
		AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	}
	else if (srcEvent.type == "MenuExtImage")
	{
		if (typeof(EventElement) == "HTMLAreaElement")
		{
			AddLink(EventElement.href,EventElement.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
		}
		else 
		{
			var srcImage = EventElement;
			var srcAnchor = srcImage.parentElement;
			do
			{ 
				srcAnchor=srcAnchor.parentElement;
				if (typeof(srcAnchor) == "undefined")
				{
					AddLink(srcImage.href,srcImage.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
					return;
				}
			}while(typeof(srcAnchor) == "HTMLAnchorElement");
			AddLink(srcAnchor.href,srcImage.Alt,strDownloadPage, strCID, strStatPage);
		}
	}	
	else if (srcEvent.type == "MenuExtUnknown")
	{
	srcAnchor = EventElement;
	if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	    {
                  	try
		{
		    AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
		}
		catch(e)
		{
		   alert("网页数据格式错误,无法下载,请尝试用鼠标左键点击下载。");
		}
	    }
	    else
	    {
	        while(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() != "a")
	        {
	            srcAnchor = srcAnchor.parentElement;
	            if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	            {
	                AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	                return;
	            }
	        }
			
	        if(EventElement != null && EventElement.tagName != null)
	        {
	            AddLink(EventElement.href,EventElement.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	        }
	        else
	        {
	            alert("无法识别的超级链接信息");
	        }
	    }
	}
	else
	{
		
	}
}




OnContextMenu();

</script>

OfflineDownload.htm


<script language="javascript">

function AddLink(Url,Info,Location,strCID,strStatUrl,strCookie)
{

	try
	{
		var UserAgent = new ActiveXObject("UserAgent.Thunder59Agent");
	}
	catch(e)
	{
		
	}
	var strJumpKey;
	if (UserAgent == null)
	{
		strJumpKey = '';	
	}
	else
	{	
		strJumpKey = UserAgent.GetJumpKey();
	}
	
	var furl = Url;

	var yuancheng = 'http://yuancheng.xunlei.com/login.html';
	var jump_url = 'http://jump.xunlei.com/jump/?jump_key='+strJumpKey+'&u1=http://lixian.vip.xunlei.com/lixian_login.html?referfrom=rightkey&furl='+encodeURIComponent(furl);
	



	
	try
	{
		var winNew = window.open(jump_url);
		if ( (winNew!=null) && (winNew.closed))
		{
		    alert('离线下载新建任务页已经被拦截,无法打开。请检查您当前的浏览器配置。');
		}
	}
	catch(e)
	{
		alert('该浏览器不支持该功能');
	}

}	




function OnContextMenu()
{
	var srcEvent = external.menuArguments.event;
	var EventElement;
	
	if(typeof(srcEvent.clientX) == "undefined")
	{
		EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.pointerX, srcEvent.pointerY );
	}
	else
	{
		EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY );
	}
		
		

	var strDownloadPage = external.menuArguments.location;
	var theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl");
	
	if (theDownloadPage != null)
	{
		strDownloadPage = theDownloadPage.value;
	}
	

	var strStatPage = "";
	var theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl");
	if (theStatPage != null)
	{
		strStatPage = theStatPage.value;
	}

	var strCID = ""
	var theCID = external.menuArguments.document.getElementById("thunder_cid");
	if (theCID != null)
	{
		strCID = theCID.value;
	}
	var srcAnchor;

	if (srcEvent.type == "MenuExtAnchor")
	{

		srcAnchor = EventElement;

		do
		{ 
			srcAnchor=srcAnchor.parentElement;
		}while(typeof(srcAnchor)=="HTMLAnchorElement");
		
		AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	}
	else if (srcEvent.type == "MenuExtImage")
	{
		if (typeof(EventElement) == "HTMLAreaElement")
		{
			AddLink(EventElement.href,EventElement.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
		}
		else 
		{
			var srcImage = EventElement;
			var srcAnchor = srcImage.parentElement;
			do
			{ 
				srcAnchor=srcAnchor.parentElement;
				if (typeof(srcAnchor) == "undefined")
				{
					AddLink(srcImage.href,srcImage.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
					return;
				}
			}while(typeof(srcAnchor) == "HTMLAnchorElement");
			AddLink(srcAnchor.href,srcImage.Alt,strDownloadPage, strCID, strStatPage);
		}
	}	
	else if (srcEvent.type == "MenuExtUnknown")
	{
	srcAnchor = EventElement;
	if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	    {
	        AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	    }
	    else
	    {
	        while(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() != "a")
	        {
	            srcAnchor = srcAnchor.parentElement;
	            if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
	            {
	                AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	                return;
	            }
	        }
			
	        if(EventElement != null && EventElement.tagName != null)
	        {
	            AddLink(EventElement.href,EventElement.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
	        }
	        else
	        {
	            alert("无法识别的超级链接信息");
	        }
	    }
	}
	else
	{
		
	}
}	

OnContextMenu();
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值