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_USER\Software\Microsoft\Office\12.0\Common\Theme (2007) ou HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Theme (2010).

É aí que entra um excelente artigo no CodeProject:

RegistryMonitor – a .NET wrapper class for RegNotifyChangeKeyValue – CodeProject

Boa codificação!
Igor

Igor Abade

Igor Abade V. Leite ([email protected]) é Microsoft MVP (Most Valuable Professional) de Visual Studio ALM desde 2006. Palestrante em diversos eventos da comunidade de desenvolvimento de software (TechEd Brasil, The Developers’ Conference, DevOps Summit Brasil, Agile Brazil, Visual Studio Summit, QCON e outros), é também autor de artigos em revistas e sites como o MSDN Brasil. Desde março de 2011 é um dos sócios da Lambda3, uma consultoria especializada em ALM, desenvolvimento de software e treinamentos. Siga-o no Twitter @igorabade.