Zum Implementieren eines benutzerdefinierten Download-Managers

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Zusammenfassung

Dieser Artikel beschreibt, wie einen benutzerdefinierte Download-Manager in Microsoft Internet Explorer 5.5 und Microsoft Internet Explorer 6 implementiert. Mit diesem Feature kann die Funktionalität von Internet Explorer und WebBrowser Applikationen durch Implementieren einer Component Object Model (COM)-Objekt mit der Datei Verfahren des Downloadvorgangs.

Implementieren eines benutzerdefinierten Download-Managers kann Ihre WebBrowser-Anwendung oder Internet Explorer verlängert um eine benutzerdefinierte Benutzeroberfläche anzuzeigen. Ein Download-Manager wird als COM-Objekt implementiert, das die IUnknown -Schnittstelle und die IDownloadManager -Schnittstelle verfügbar macht. IDownloadManager hat nur eine Methode IDownloadManager::Download. Die IDownloadManager::Download wird von Internet Explorer oder einem WebBrowser Anwendung eine Datei aufgerufen. Wenn eine Datei in einem WebBrowser Anwendung zum Herunterladen ausgewählt ist, erfolgt der benutzerdefinierte Download-Manager auf zwei Arten:
  • In Internet Explorer 5.5 oder höher Wenn die IServiceProvider: QueryService -Methode die IServiceProvider -Schnittstelle implementiert ist, ruft die WebBrowser Anwendung zuerst IServiceProvider: QueryService einen IDownloadManager -Schnittstellenzeiger abzurufen. Eine mögliche Implementierung der IServiceProvider: QueryService -Methode finden Sie im Abschnitt "Codebeispiel" dieses Artikels.
  • Für Internet Explorer 6 und höher überprüft die WebBrowser Anwendung IServiceProvider: QueryService -Methode nicht implementiert oder wenn Sie Internet Explorer verwenden (IServiceProvider: QueryService kann nicht in Internet Explorer implementiert), die Anwendung für einen Registrierungswert, der den Klassenbezeichner (CLSID) des Download-Managers enthält COM-Objekt. Die CLSID kann auf die folgenden Werte bereitgestellt werden:
    \HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\DownloadUI
    \HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\DownloadUI

    Hinweis DownloadUI ist ein String-Wert. Der Wert ist die CLSID des Download-Manager-COM-Objekt.
Eine detaillierte Implementierung finden Sie im Abschnitt "Codebeispiel" des Artikels.

Hinweis IServiceProvider -Ansatz funktioniert nicht, wenn eine Verknüpfung klicken und dann auf
Ziel speichern unter. DLL funktioniert registriert des Download-Managers immer.

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks für dieses Verfahren müssen:
  • Microsoft Visual Studio 6
  • Microsoft Internet Explorer 5.5 Servicepack 2 und höher

Header und Bibliotheken herunterladen

Sie müssen Internet Explorer Header und Bibliotheken für Internet Explorer 5.5 und Internet Explorer 6 downloaden und Verzeichnisse einschließen und Bibliothek hinzugefügt. Hierzu finden Sie auf folgenden Websites von Microsoft Developer Network (MSDN):

Für InternetExplorer 5.5Für InternetExplorer 6

Codebeispiel

InternetExplorer 5.5
// This is a custom download manager implementation for Internet Explorer 5.5 SP2.#include "downloadmgr.h"
STDMETHOD(QueryService)(REFGUID guidService,REFIID riid,void** ppv)
{
HRESULT hr = E_NOINTERFACE;
if (guidService == SID_SDownloadManager && riid == IID_IDownloadManager)
{
// Create a new CDownloadMgr object by using ATL.
CComObject<CDownloadMgr>* pDownloadMgr;
hr = CComObject<CDownloadMgr>::CreateInstance(&pDownloadMgr);
// Query the new CDownloadMgr object for the IDownloadManager interface.
hr = pDownloadMgr->QueryInterface(IID_IDownloadManager, ppv);
// Call the Download method.

// -or-

// Call the Download method directly if you implement it in this class.
// Download(NULL,NULL,0,0,NULL,NULL,NULL,0);
// hr = S_OK;
}

return hr;
}

Internet Explorer 6
// This is the custom download manager implementation for Internet Explorer 6 or later.// In the .h file of the COM DLL.
#include "downloadmgr.h"
STDMETHOD(Download)(IMoniker* pmk,
IBindCtx* pbc,
DWORD dwBindVerb,
LONG grfBINDF,
BINDINFO* pBindInfo,
LPCOLESTR pszHeaders,
LPCOLESTR pszRedir,
UINT uiCP );
// In the .cpp file.
STDMETHODIMP CDownload::Download(IMoniker* pmk,
IBindCtx* pbc,
DWORD dwBindVerb,
LONG grfBINDF,
BINDINFO* pBindInfo,
LPCOLESTR pszHeaders,
LPCOLESTR pszRedir,
UINT uiCP )
{
::MessageBox(NULL,"Download","Download Manager",MB_OK);
return S_OK;
}

Eigenschaften

Artikelnummer: 327865 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback