Registrieren eines Handlers für ein Geräteereignis
Handler definieren den Softwareteil der automatischen Wiedergabe. Sie definieren das Symbol und den Anzeigenamen der Software sowie die Komponente Component Object Model (COM), die instanziiert werden soll, und wie die Komponente als Reaktion auf ein Ereignis initialisiert wird. Jeder Handler für ein bestimmtes Ereignis wird als Wert unter dem entsprechenden EventHandler-Schlüssel registriert. Wenn dieses Ereignis erkannt wird, wird der Benutzer aufgefordert, einen Handler aus einer Liste aller für dieses Ereignis registrierten Handler auszuwählen.
Anweisungen
Handler und die zugehörigen Werte werden unter dem Schlüssel AutoplayHandlers Handlers\ definiert. Unterschlüssel unterscheiden sich je nachdem, ob das System Geräteinhalte direkt lesen kann oder ob das Gerät Inhalte über eine proprietäre Schnittstelle für das System bereitstellt.
Das folgende Beispiel zeigt die Unterschlüssel und Werte, die für ein Gerät verwendet werden, z. B. eine digitale Videokamera oder .mp3 Player, das seine Inhalte über eine proprietäre Schnittstelle für das System bereitstellt. Der Beispielhandler heißt MyHandler.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = Play music
CLSID [REG_SZ] = {a51f2ed3-634e-4a97-9d55-efcf08e7b32f}
DefaultIcon [REG_EXPAND_SZ] = %ProgramFiles%\Windows Media Player\wmplayer.exe,0
InitCmdLine [REG_SZ] = /Play
ProgID [REG_SZ] = WMP.PlayMusicFiles
Provider [REG_SZ] = Windows Media Player
Hinweis
Während das Beispiel sowohl einen ProgID- als auch einen CLSID-Wert (Class Identifier) zeigt, schließen sich diese Werte in der Praxis gegenseitig aus, sodass nur der eine oder der andere vorhanden ist. Der ProgID-Wert wird bevorzugt. Je nachdem, was verwendet wird, sollte sie auf eine COM-Komponente verweisen, die die IHWEventHandler-Schnittstelle implementiert.
Sie können den Action-Wert als Literalwert eingeben, z. B. "Musik wiedergeben", wie in diesem Beispiel gezeigt, oder als Dateinamen mit einer Ressourcenzeichenfolge. Sie können den Provider-Wert auch als Literalwert oder als Dateinamen mit einer Ressourcenzeichenfolge eingeben. Die automatische Wiedergabe kombiniert den Wert Action und den Provider-Wert mit dem Wort "using", um eine benutzerfreundliche Untertitel zu erstellen, die auf der Benutzeroberfläche angezeigt wird. Im Beispiel lautet die resultierende Untertitel "Musik mit Windows Medienwiedergabe wiedergeben".
Der DefaultIcon-Wert verweist entweder auf eine ICO-Datei oder eine Ressource in einer Binärdatei. Wenn der numerische Wert, der auf den Binären Dateinamen folgt, null oder größer ist, ist er der Indexwert des Symbols in dieser Binärdatei. Wenn es sich um einen negativen Wert handelt, ist dies die Symbolressourcen-ID. Negative Indexwerte werden empfohlen. Im Fall einer ICO-Datei ist kein Wert erforderlich. Es wird empfohlen, Umgebungsvariablen im Pfad zu verwenden.
Der InitCmdLine-Wert übergibt die IHWEventHandler::Initialize-Methode unverändert, bevor andere Methoden aufgerufen werden.
Das folgende Beispiel zeigt die Unterschlüssel und Werte, die für ein Gerät verwendet werden, das direkt gelesen werden kann, z. B. ein CD-ROM-Laufwerk oder einen anderen Wechseldatenträger. Auch hier heißt der Beispielhandler MyHandler.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-276
DefaultIcon [REG_EXPAND_SZ] = %systemroot%\System32\wiaacmgr.exe,-2
InvokeProgID [REG_SZ] = WIA.AutoPlayDropHandler
InvokeVerb [REG_SZ] = open
Provider [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-101
In diesem Beispiel werden die Werte Action und Provider als Dateiname mit einer Ressourcenzeichenfolge anstelle von Literalwerten angezeigt, aber die Zeichenfolgen, auf die sie verweisen, werden auf die gleiche Weise verwendet. Sie werden mit dem Wort "using" kombiniert, um eine freundliche Untertitel zu bilden, wie zuvor erläutert.
InvokeProgID- und InvokeVerb-Werte ersetzen CLSID, InitCmdLine und ProgID. Die Werte InvokeProgID und InvokeVerb stimmen mit Schlüsselnamen überein, die unter HKEY_CLASSES_ROOT gefunden werden, wie im folgenden Registrierungseintrag gezeigt. Dieser Satz von Beispielschlüsseln entspricht dem zuvor beschriebenen Handlerbeispiel.
HKEY_CLASSES_ROOT
WIA.AutoplayDropHandler
shell
open
DropTarget
Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}
Die CoCreateInstance-Funktion verwendet die CLSID, um die entsprechende Anwendung zu implementieren.
Nachdem Sie den Handler auf eine dieser beiden Arten definiert haben, müssen Sie ihn für ein bestimmtes Ereignis registrieren. Dazu geben Sie den Handlernamen als Wert für den Schlüssel dieses Ereignisses unter EventHandlers an. Das folgende Beispiel zeigt, wie MyHandler als Handler für das GenericVolumeArrival-Ereignis registriert wird. Es hat keinen zugewiesenen Datenwert.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
EventHandlers
GenericVolumeArrival
MyHandler [REG_SZ]
Zugehörige Themen