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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top