Freigeben über


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]

IHWEventHandler

Cocreateinstance