Come registrare un gestore per un evento del dispositivo
I gestori definiscono la parte software di AutoPlay. Definiscono l'icona e il nome descrittivo del software, nonché il componente COM (Component Object Model) per creare un'istanza e come inizializzare il componente in risposta a un evento. Ogni gestore per un evento specifico viene registrato come valore nella chiave EventHandler appropriata. Quando viene rilevato tale evento, all'utente viene richiesto di scegliere un gestore da un elenco di tutti i gestori registrati per tale evento.
Istruzioni
I gestori e i relativi valori associati vengono definiti sotto la chiave Gestori autoplayHandlers\. Le sottochiavi variano a seconda che il sistema possa leggere direttamente il contenuto del dispositivo o se il dispositivo fornisce contenuti al sistema tramite un'interfaccia proprietaria.
L'esempio seguente illustra le sottochiavi e i valori usati per un dispositivo, ad esempio una videocamera digitale o un lettore .mp3, che fornisce il relativo contenuto al sistema tramite un'interfaccia proprietaria. Il gestore di esempio è denominato 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
Nota
Mentre l'esempio mostra sia un valore ProgID che un valore CLSID (Class Identifier), in pratica questi valori si escludono a vicenda in modo che solo uno o l'altro sia presente. Il valore ProgID è preferibile. Indipendentemente dall'uso, deve puntare a un componente COM che implementa l'interfaccia IHWEventHandler .
È possibile immettere il valore azione come valore letterale, ad esempio "Riproduci musica", come illustrato in questo esempio o come nome di file con una stringa di risorsa. È anche possibile immettere il valore provider come valore letterale o come nome file con una stringa di risorsa. AutoPlay combina il valore action e il valore provider con la parola "using" per creare un didascalia descrittivo visualizzato nell'interfaccia utente. Nell'esempio, il didascalia risultante è "Riprodurre musica usando Lettore multimediale Windows".
Il valore DefaultIcon punta a un file con estensione ico o a una risorsa in un file binario. Se il valore numerico che segue il nome del file binario è zero o maggiore, è il valore di indice dell'icona nel file binario. Se è un valore negativo, è l'ID risorsa icona. Sono consigliati valori di indice negativi. Non è necessario alcun valore nel caso di un file con estensione ico. È consigliabile usare le variabili di ambiente nel percorso.
Il valore InitCmdLine passa invariato tramite il metodo IHWEventHandler::Initialize prima che vengano chiamati altri metodi.
L'esempio seguente mostra le sottochiavi e i valori usati per un dispositivo che può essere letto direttamente, ad esempio un'unità CD-ROM o un altro disco rimovibile. Anche in questo caso, il gestore di esempio è denominato 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 questo esempio i valori Action e Provider vengono visualizzati come nome file con una stringa di risorsa anziché valori letterali, ma le stringhe a cui fanno riferimento vengono usate nello stesso modo. Vengono combinati con la parola "using" per formare un didascalia descrittivo come illustrato in precedenza.
I valori InvokeProgID e InvokeVerb sostituiscono CLSID, InitCmdLine e ProgID. I valori InvokeProgID e InvokeVerb corrispondono ai nomi di chiave presenti in HKEY_CLASSES_ROOT, come illustrato nella voce del Registro di sistema seguente. Questo set di chiavi di esempio corrisponde all'esempio di gestore specifico descritto in precedenza.
HKEY_CLASSES_ROOT
WIA.AutoplayDropHandler
shell
open
DropTarget
Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}
La funzione CoCreateInstance usa CLSID per implementare l'applicazione appropriata.
Dopo aver definito il gestore in uno di questi due modi, è necessario registrarlo per un evento specifico. A tale scopo, specificare il nome del gestore come valore per la chiave dell'evento in EventHandlers. Nell'esempio seguente viene illustrato come registrare MyHandler come gestore per l'evento GenericVolumeArrival. Non ha alcun valore di dati assegnato.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
EventHandlers
GenericVolumeArrival
MyHandler [REG_SZ]
Argomenti correlati