Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Implementing a Custom Download Manager

The ability to implement a custom download manager was introduced in Microsoft Internet Explorer 5.5. This feature enables you to extend the functionality of Windows Internet Explorer and WebBrowser applications by implementing a Component Object Model (COM) object to handle the file download process.

By implementing a custom download manager, your WebBrowser application can be extended to display a custom user interface. You could, for example, create a download manager that enables you to view MPEG files or launch applications.

A download manager is implemented as a COM object that exposes the IUnknown and IDownloadManager interface. IDownloadManager has only one method, IDownloadManager::Download, which is called by Internet Explorer or a WebBrowser application to download a file. When a file is selected for download in a WebBrowser application, the custom download manager is accessed in one of two ways.

  1. If the IServiceProvider::QueryService method of the IServiceProvider interface is implemented, the WebBrowser application first calls IServiceProvider::QueryService to retrieve an IDownloadManager interface pointer. The following example shows a possible implementation of the IServiceProvider::QueryService method.

    STDMETHODIMP CServiceProvider::QueryService(REFGUID guidService,
                                                REFIID riid,
                                                void **ppv)
        if (guidService == SID_SDownloadManager && riid == IID_IDownloadManager)
            // Create new CDownloadMgr object using ATL.
            CComObject<CDownloadMgr>* pDownloadMgr;
            hr = CComObject<CDownloadMgr>::CreateInstance(&pDownloadMgr);
            // Query the new CDownloadMgr object for IDownloadManager interface.
            hr = pDownloadMgr->QueryInterface(IID_IDownloadManager, ppv);
        return hr;
  2. For Microsoft Internet Explorer 6 and later, if the WebBrowser application does not implement the IServiceProvider::QueryService method, or when using Internet Explorer itself for which IServiceProvider::QueryService cannot be implemented, the application checks for the presence of a registry key containing the class identifier (CLSID) of the download manager COM object. The CLSID can be provided in either of the following registry values.

             Internet Explorer
             Internet Explorer

If the application cannot locate a custom download manager the default download user interface is used.

Related topics




© 2015 Microsoft