|
Return to begin of this article
This tutorial explains how to add an entry into the standard context menus in Microsoft Internet Explorer that initiates the URL downloading process from the browsed web page.
Often developers, making applications for browsing and viewing web-documents, want to extend the functionality of their program. The user interface will be more friendly and convenient if you add the ability to access your downloader program from different places when it is necessary, for instance, from the Internet Explorer context menu.
To extend the functionality of the standard context menu you need basic knowledge of the Windows Registry and the Windows Shell Extension API. The main idea is to link a new menu item to the URL, which contains an executable script.
Let us look at the implementation of the downloader program by using the ActiveX version of the CleverMultiDownLoader component from the Clever Internet ActiveX Suite library. The scripting host can access to the component's functions itself via instance of the clMultiDownLoader. In this case it can be used only in the synchronous mode. If this functionality is enough, you can skip the creating of the local com-server wrapper and go to creating the script and its linking to the standard context menu.The creation of the script
If you need an independent asynchronous mode of the download process you should create a simple local com-server. The following steps help you create such an application:
- Create a new Visual Basic ActiveX EXE project.
- Add to project the description of the class of the local server to be, which declares one simple function, AddURL. This function has one parameter, URL which will be downloaded.
Next, add a new form to our project that allows us to visualize the downloading process. Also we place the ListBox component for displaying the URL list and next, write the showing of the form when our server starts, by using the sub Main (), for instance.
Sub Main() MainForm.Show End Sub |
After that, we can write the body of the AddURL function:
Private Downloader As clMultiDownLoader Private Function GetDownLoader() As clMultiDownLoader If Downloader Is Nothing Then Set Downloader = New clMultiDownLoader Downloader.LocalFolder = "c:\temp\" End If Set GetDownLoader = Downloader End Function Public Sub AddURL(AURL As String) Dim Item As IclDownLoaderItem Set Item = GetDownLoader.Items.Add On Error Resume Next Item.URL = AURL MainForm.DownloadList.AddItem Item.URL & " - " & Item.LocalFile End Sub |
Now the com-server is ready and its interface is accessible for the scripting host. Next, we should create an HTML document with executable script and link it to the explorer context menu. In the easiest case the script can look like this:
<script language="VBScript"> Set cl_popup = CreateObject("popupdownload.popupdownloadclass") Set links = external.menuArguments.document.links For i = 0 to links.length - 1 cl_popup.AddURL links(i).href next </script> |
The instance of our com-server is created inside this script and then, it performs a loop through all links within the currently browsed document. While walking, each link is added to our facility to download.
To link the script to the context menu, we should add new records into the HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt registry key:
Key: Download &All using Clever ActiveX Downloader Default value: file://c:\samples\ popupadd_link.htm DWORD value contexts: 000000f3 |
You can learn more about setup of the Microsoft Internet Explorer context menu from the MSDN Library and Microsoft online-resource - MSDN.
After accomplishing all these steps, we will have flexible and convenient facility to operate remote resources. Your application will be used only it is really necessary.
Finally we want to note that you should register the ActiveX server in your system in order that our test example should work properly. To do that you can just run it as a usual EXE application only once.
The full version of this example can be downloaded here.
Clever Components Support Team. We are always glad to support you. Please write to info@clevercomponents.com
|