Compartilhar 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 do software e o nome amigável, bem como o componente COM (Component Object Model) para instanciar e como inicializar o componente em resposta a um evento. Cada manipulador de um evento específico é registrado como um valor na chave EventHandler apropriada. Quando esse evento é detectado, 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 na chaveManipuladoresde AutoplayHandlers\. As subchaves diferem dependendo se o sistema pode ler o conteúdo do dispositivo diretamente ou se o dispositivo fornece conteúdo ao sistema por meio 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 para o 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 CLSID (identificador de classe), na prática esses valores são mutuamente exclusivos para que apenas um ou outro esteja presente. O valor progID é preferencial. O que for usado, ele deve apontar para um componente COM que implementa a interface IHWEventHandler .

 

Você pode inserir o valor action como um valor literal, por exemplo, "Reproduzir música", conforme 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 um legenda amigável que é exibido na interface do usuário. No exemplo, o legenda resultante é "Reproduzir música usando Reprodutor Multimídia do Windows".

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, será o valor de índice do ícone nesse arquivo binário. Se for um valor negativo, será a ID do recurso de ícone. Os valores de índice negativos são recomendados. Nenhum valor é necessário no caso de um arquivo .ico. É recomendável que você use variáveis de ambiente no caminho.

O valor InitCmdLine passa sem alterações pelo método IHWEventHandler::Initialize antes que outros métodos sejam chamados.

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 que eles referenciam são usadas da mesma maneira. Eles são combinados com a palavra "using" para formar uma legenda amigável, conforme 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 entrada do Registro a seguir. Esse conjunto de chaves de exemplo corresponde ao exemplo de Manipulador específico descrito anteriormente.

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

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

Depois de definir o manipulador de qualquer uma dessas duas maneiras, você precisará registrá-lo para um evento específico. Faça isso fornecendo 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 evento GenericVolumeArrival. Ele não tem nenhum 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