65.9K
CodeProject 正在变化。 阅读更多。
Home

SmartDownloadManager

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.73/5 (5投票s)

2007年5月15日

3分钟阅读

viewsIcon

40543

downloadIcon

992

使用 VBScript 创建下载管理器。

Screenshot - SmartDownloadManager1.gif

Screenshot - SmartDownloadManager2.gif

引言

本文提供了一些关于如何创建您自己的下载管理器的基本信息。

Procedure

应用程序要运行,必须遵循四个不同的步骤。它们是

  1. 将您自己的项目添加到 Internet Explorer 的右键菜单中。
  2. 使用 VBScript 文件、Javascript 文件或 HTML 文件从页面收集所需信息,当用户点击添加的项目时。
  3. 启动执行实际下载的主应用程序。
  4. 对主应用程序进行编程,以下载目标文件。

步骤 1:将我们自己的项目添加到 Internet Explorer 的右键菜单中

Internet Explorer 提供了一个内置的注册表项,用于启用向右键菜单添加新菜单项的功能。

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

向上述键添加一个新的子键将在 Internet Explorer 的右键菜单中显示一个新项目。 让我们添加一个名为“立即下载”的新键。 我们必须将脚本文件的路径添加到该键的默认值中。 当项目被点击时,Internet Explorer 会启动该脚本文件。

步骤 2:从页面收集所需信息

该脚本文件应收集信息,例如 URL、用户右键单击的元素等。当用户选择添加的项目时,将启动此文件。

    var path = document.location.pathname;
    var Exepath = path.replace("SmartDownloadManager.htm",
        "SmartDownloadManager.exe");
    var Doc   = external.menuArguments.document;
    var Event = external.menuArguments.event;
    var mainURL   = external.menuArguments.document.URL;
    var Element = Doc.elementFromPoint(Event.clientX, Event.clientY);
    var Anchor  = Element;
    var cookie = Doc.cookie;
    while( Anchor.tagName!="A" && Anchor.tagName!="HTML" ) 
    {
        Anchor = Anchor.parentElement;
    }

    if(Anchor.tagName=="A") 
    {
        lnkURL  = Anchor.href; 
        var oShell = new ActiveXObject("Shell.Application");
        var commandtoRun = Exepath;
        oShell.ShellExecute(commandtoRun, 
            "\""+mainURL+"\"" + " \"" + cookie+"\" \"" + lnkURL + "\"","",
            "open", "1");
    }

上述代码检索用户在其上右键单击的元素,并将引用存储在变量 Element 中。 使用一个简单的 while 循环来检查 anchor 标签是否具有任何嵌套标签,例如图像或任何其他格式化标签。 最后,一个简单的 if 条件检查用户是否选择了 anchor 标签或空白页面。 它启动应用程序并将所需信息作为命令行参数传递给应用程序。

步骤 3:启动主应用程序

    var oShell = new ActiveXObject("Shell.Application");
    oShell.ShellExecute(commandtoRun, "\""+mainURL+"\"" 
        + " \"" + cookie+"\" \"" + lnkURL + "\"","", "open", "1");

上述代码启动执行实际下载的主应用程序,并传递诸如:主页 URL、链接的 URL 等信息。

步骤 4:对主应用程序进行编程以下载目标文件

    static void Main(string[] args)

在步骤 3 中提供的参数存储在 Main 函数的数组 args 中。 使用这些参数,我们可以轻松地创建一个下载目标文件的程序。 在 CodeProject.com 网站本身上可以找到很多关于这个主题的文章。

结论

将可执行文件夹复制到任何位置。 可执行文件夹中有一个名为 SetUp.exe 的文件。 必须首次执行此文件,它将创建适当的注册表值。 一旦文件被执行,文件位置不应更改,因为它将无法正常工作。 如果文件夹的位置发生更改,则必须手动删除 立即下载 的注册表。 删除注册表后,您可以安全地再次执行 SetUp.exe 以创建新的注册表值。

历史

  • 2007 年 5 月 15 日 - 发布原始版本
© . All rights reserved.