15/04/2011 | Autor: Igor Abade V. Leite | Categoria: Técnico | Comentários

RegistryMonitor (ou “como monitorar alterações em chaves do Registry”)

Recentemente deparei-me com a seguinte situação: Estou desenvolvendo um addin para o Outlook, e quero que ele tenha uma aparência consistente com o esquema de cores em uso no Office 2007 / 2010. Para isso, tenho dois requisitos:

  1. Preciso saber qual o esquema de cores (Preto, Azul, Prata) está atualmente selecionado;
  2. Caso o usuário mude o esquema de cores, preciso ser notificado para que meu addin possa reagir de acordo. Com relação ao requisito número um, a resposta está no post “Setting the BackColor to match the Office 2007 color scheme”. Nele descobri que o tema atualmente selecionado está gravado em uma chave no Registry – extremamente fácil de ler a partir do meu addin. Agora, o segundo requisito. Como saber se o usuário mudou o esquema de cores? Bom, não há nenhum evento para isso. O Office (neste caso, o Outlook) simplesmente muda o valor da chave no Registry e reflete as alterações na sua UI. Portanto, eu precisava de um mecanismo para monitorar o Registry e ser notificado em caso de alterações nas chaves HKEY_CURRENT_USERSoftwareMicrosoftOffice12.0CommonTheme (2007) ou HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0CommonTheme (2010). É aí que entra um excelente artigo no CodeProject: RegistryMonitor - a .NET wrapper class for RegNotifyChangeKeyValue - CodeProject Boa codificação! Igor