Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico está organizado da seguinte forma:
Boas Práticas
Os verbos estáticos são os mais simples de implementar e fornecem uma rica funcionalidade. Recomendamos vivamente que implemente um verbo usando um dos métodos verbais estáticos.
Melhores práticas para implementações de verbos
A lista a seguir representa as melhores práticas para implementações de verbos em programação.
- Escolha sempre o método verbal mais simples que atenda às suas necessidades.
- Use um método de verbo estático, se possível.
- Não execute operações que consomem muitos recursos ou E/S no thread da interface do usuário. Tanto IShellExtInit::Initialize quanto IContextMenu::QueryContextMenu precisam ser muito conservadores no trabalho que executam. IContextMenu::InvokeCommand deve ser executado em outro processo ou você deve criar um novo thread para evitar bloquear o chamador.
- Prefixe os verbos com o nome do fornecedor independente de software (ISV) da seguinte forma
ISVName.verb. O uso de nomes não qualificados pode resultar em colisões com vários ISVs que escolheram o mesmo nome de verbo. - Use sempre um ProgID específico do aplicativo. Como alguns tipos de item não usam esse mapeamento, há uma necessidade de nomes exclusivos do fornecedor.
- Posicione a interface de utilizador em relação ao método de invocação, mas não execute numa thread de invocação.
- Não aceite o valor de retorno S_OK para verbos canônicos passados para o IContextMenu::InvokeCommand método. Isso causa uma falha para a implementação real do verbo a ser invocado e retorna um código de falha para verbos canônicos. Se você não oferecer suporte a verbos canônicos, retornará a falha quando um valor HIWORD(lpVerb) diferente de zero for encontrado.
- Evite o uso de rundll32.exe como anfitrião para o seu verbo.
- Ao implementar IContextMenu::QueryContextMenu certifique-se de retornar o número de verbos que foram adicionados ao menu através do valor HRESULT usando a macro ResultFromShort.
- Caso se registe em uma das seguintes entradas da chave de registo, tenha cuidado e certifique-se de registar o seu manipulador no tipo mais específico para minimizar as consequências potencialmente indesejadas.
- HKEY_CLASSES_ROOT\*
- HKEY_CLASSES_ROOT\AllFileSystemObjects
- HKEY_CLASSES_ROOT\Folder
- HKEY_CLASSES_ROOT\Directory
- Defina a MayChangeDefaultMenu chave somente se você antecipar que talvez seja necessário alterar o verbo padrão no menu de atalho. Se o manipulador não alterar o verbo padrão, então você não deve definir essa chave porque isso faz com que o sistema carregue sua DLL desnecessariamente.
- Minimize o trabalho que você executa no IShellExtInit::Initialize. Para manipuladores de menu de atalho, capture o objeto de dados passado para IShellExtInit::Initializee, em seguida, processe-o em IContextMenu::QueryContextMenuou IContextMenu::InvokeCommand.
Práticas recomendadas para verbos de seleção múltipla
Como o número de itens em um cenário de verbo de seleção múltipla pode ser grande, é importante que você considere as implicações de desempenho de suas implementações verbais. Por exemplo, quando um usuário pesquisa por "*" em um escopo que inclui um grande número de itens e, em seguida, clica Selecionar todos os e clica com o botão direito do mouse, o verbo é apresentado com uma seleção que pode ter milhares de itens nele. Como resultado, os verbos devem considerar apenas o primeiro item da seleção e o número total de itens. O primeiro item é definido como o item na parte superior da exibição ou o item que o usuário clicou com o botão direito do mouse pela primeira vez.
No Windows 7 e posterior, o número de itens passados para um verbo é limitado a 16 quando um menu de atalho é consultado. O verbo é então recriado e reinicializado com a seleção completa quando esse verbo é invocado.
Em alguns casos, é adequado considerar um pequeno número de itens fixos. Por exemplo, é apropriado que um verbo "diff" considere apenas os dois primeiros itens. Geralmente, você não precisa testar todos os itens da seleção para ver se é um determinado tipo ou consultar todos os itens da seleção para suas propriedades. Olhe antes para o primeiro item e decida se é apropriado adicionar o seu verbo.
Seleções heterogêneas
Verbos otimistas são adicionados automaticamente no caso de seleção múltipla, assumindo que itens não inspecionados podem ser manipulados pelo verbo. Em contraste, verbos pessimistas não são adicionados quando a seleção contém itens não inspecionados e só são adicionados nos casos em que o número de itens é pequeno.
Os verbos relacionados ao estilo do jogador devem adotar uma abordagem otimista e ignorar silenciosamente os itens que não são tratáveis. Se uma falha em agir sobre os itens pode causar perda de dados ou confusão, então o verbo deve avisar os usuários sobre itens que não podem ser processados. Por exemplo, um verbo "backup" deve indicar que não foi possível fazer backup de alguns itens.
Tópicos relacionados
-
Escolher um verbo estático ou dinâmico para o seu menu de atalho
-
Menus de atalho (contexto) e manipuladores de menu de atalho