Incorporado Controle de exibição do Outlook
-
02-07-2019 - |
Pergunta
Eu estou tentando fazer um Outlook 2003 add-in usando o Visual Studio 2008 no Windows XP SP3 e Internet Explorer 7.
Meu add-in está usando personalizado home page da pasta que exibe o meu formulário personalizado, que envolve Outlook View Control.
I get COM exceção com 'exceção de HRESULT: 0xXXXXXXXX' descrição cada vez que tento definir Pasta propriedade do OVC. O código de erro é um número aleatório, cada vez é diferente. Não é o primeiro acesso às propriedades do controle, antes disso, Visualização e ViewXML propriedades estão já definido. O controle é marcado como seguro para script.
Eu estou usando valor da propriedade CurrentFolder.FolderPath do explorador ativo, o que parece ser um caminho certo:
Outlook.Explorer currentExplorer = app.ActiveExplorer();
if (currentExplorer != null)
{
ovcWrapper.Folder = currentExplorer.CurrentFolder.FolderPath;
}
Este é topo do rastreamento de pilha:
System.Runtime.InteropServices.COMException (0xXXXXXXXX): Exception from HRESULT: 0xXXXXXXXX
at Microsoft.Office.Interop.OutlookViewCtl.ViewCtlClass.set_Folder(String pVal)
at AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl.set_Folder(String value)..
Isso está acontecendo somente se a pasta está localizada no arquivo PST não-padrão. Alterando a pasta de arquivo PST padrão dentro produzirá nenhuma exceção.
Devo sublinhar que tudo funcionou muito bem antes de eu ir para férias :). Parece que o Windows XP instalado algumas atualizações que mudaram de segurança padrão do Internet Explorer ou Outlook 2003, enquanto eu estava ausente.
Por outro (máquina virtual) com o Office 2007 e Internet Explorer 6, sem nenhuma atualização, tudo está funcionando bem.
Solução
Depois de um tempo, eu finalmente descobrir o que é a solução:. Alterar o nome do armazenamento externo para algo novo
Durante a inicialização do suplemento, ele carrega o arquivo PST não-padrão, e muda seu nome (não o nome do arquivo PST, mas o nome da pasta raiz) para "Documentos".
Este é o código:
session.AddStore("C:\\test.pst"); // loads existing or creates a new one, if there is none.
storage = session.Folders.GetLast(); // grabs root folder of the new fileStorage.
if (storage.Name != storageName) // if fileStorage is brand new, it has default name.
{
storage.Name = "Documents";
session.RemoveStore(storage); // to apply new fileStorage name, it have to be removed and added again.
session.AddStore(storagePath);
}
Solution não é para uso dos documentos "como um nome de mais nada, mas algo novo. Problema não está relacionado ao nome específico.
Outras dicas
Dobri Dan, nency :)
Eu não sei se eu posso realmente oferecer uma solução "bala de prata", dada a informação aqui ... mas aqui estão ideias poucos / notas para experimentar:
Tendo trabalhado com o Outlook em alguns projetos no passado, posso dizer-lhe que é um pássaro engraçado às vezes, quando se trata de dar / conceder acesso a usuários externos / processos. Às vezes, requer que o usuário acesso confirmar manualmente ou entrar ... então a certeza de que você tem
app.Session.Logon()
cuidado algum lugar
O outro aviso coisa que é o uso de app.ActiveExplorer()
Certifique-se de que esta função está retornando exatamente o que você pensa que é.; Leva o de nível superior janela no desktop do usuário ... o que é usualyy , mas nem sempre a janela que você está tentando trabalhar, por isso só DoubleCheck.