Partilhar via


Como registrar um manipulador para um evento de dispositivo

Os manipuladores definem a parte de software da Reprodução Automática. Eles definem o ícone e o nome amigável do software, bem como o componente COM (Component Object Model) a ser instanciado e como inicializar o componente em resposta a um evento. Cada manipulador de um evento específico regista-se como um valor na chave EventHandler apropriada. Quando esse evento é detetado, o usuário é solicitado a escolher um manipulador de uma lista de todos os manipuladores registrados para esse evento.

Instruções

Os manipuladores e seus valores associados são definidos sob a chave AutoplayHandlers\Handlers. As subchaves diferem dependendo se o sistema pode ler o conteúdo do dispositivo diretamente ou se o dispositivo fornece conteúdo ao sistema através de uma interface proprietária.

O exemplo a seguir mostra as subchaves e os valores usados para um dispositivo, como uma câmera de vídeo digital ou .mp3 player, que fornece seu conteúdo ao sistema por meio de uma interface proprietária. O manipulador de exemplo é chamado 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

Observação

Embora o exemplo mostre um valor ProgID e um identificador de classe (CLSID), na prática esses valores são mutuamente exclusivos, de modo que apenas um ou outro está presente. O valor ProgID é preferido. Seja qual for o usado, ele deve apontar para um componente COM que implemente a interface IHWEventHandler.

 

Você pode inserir o valor Action como um valor literal, por exemplo, "Reproduzir música", como mostrado neste exemplo, ou como um nome de arquivo com uma cadeia de caracteres de recurso. Você também pode inserir o valor Provider como um valor literal ou como um nome de arquivo com uma cadeia de caracteres de recurso. A Reprodução Automática combina o valor Action e o valor Provider com a palavra "using" para criar uma legenda amigável que é exibida na interface do usuário. No exemplo, a legenda resultante é "Reproduzir música usando o Windows Media Player".

O valor DefaultIcon aponta para um arquivo .ico ou um recurso em um arquivo binário. Se o valor numérico que segue o nome do arquivo binário for zero ou maior, então é o valor de índice do ícone nesse arquivo binário. Se for um valor negativo, então é o ID do recurso do ícone. Recomendam-se valores de índice negativos. Nenhum valor é necessário no caso de um arquivo .ico. É recomendável usar variáveis de ambiente no caminho.

O valor InitCmdLine passa inalterado pelo método IHWEventHandler::Initialize antes de qualquer outro método ser chamado.

O exemplo a seguir mostra as subchaves e os valores usados para um dispositivo que pode ser lido diretamente, como uma unidade CD-ROM ou outro disco removível. Novamente, o manipulador de exemplo é chamado 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

Neste exemplo, os valores Action e Provider são mostrados como um nome de arquivo com uma cadeia de caracteres de recurso em vez de valores literais, mas as cadeias de caracteres às quais eles fazem referência são usadas da mesma maneira. Eles são combinados com a palavra "usando" para formar uma legenda amigável, como explicado anteriormente.

Os valores InvokeProgID e InvokeVerb substituem CLSID, InitCmdLine e ProgID. Os valores InvokeProgID e InvokeVerb correspondem aos nomes de chave encontrados em HKEY_CLASSES_ROOT, conforme mostrado na seguinte entrada do Registro. Este conjunto de chaves de exemplo corresponde ao exemplo específico de Handler descrito anteriormente.

HKEY_CLASSES_ROOT
   WIA.AutoplayDropHandler
      shell
         open
            DropTarget
               Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}

A funçãoCoCreateInstance usa o CLSID para implementar o aplicativo apropriado.

Depois de definir o manipulador de qualquer uma dessas duas maneiras, você precisa registrá-lo para um evento específico. Para fazer isso, forneça o nome do manipulador como um valor para a chave desse evento em EventHandlers. O exemplo a seguir mostra como registrar MyHandler como um manipulador para o GenericVolumeArrival evento. Não tem valor de dados atribuído.

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AutoplayHandlers
                     EventHandlers
                        GenericVolumeArrival
                           MyHandler [REG_SZ]

IHWEventHandler

CoCreateInstance