Domanda

Sto cercando di creare un componente aggiuntivo di Outlook 2003 utilizzando Visual Studio 2008 su Windows XP SP3 e Internet Explorer 7.

Il mio componente aggiuntivo utilizza la home page della cartella personalizzata che visualizza il mio modulo personalizzato, che avvolge il controllo visualizzazione di Outlook.

Ricevo l'eccezione COM con la descrizione 'Eccezione da HRESULT: 0xXXXXXXXX' ogni volta che provo a impostare la proprietà Cartella di OVC. Il codice di errore è un numero casuale, ogni volta è diverso. Non è il primo accesso alle proprietà del controllo, prima che le proprietà View e ViewXML siano già impostate. Il controllo è contrassegnato come Sicuro per gli script.

Sto usando il valore della proprietà CurrentFolder.FolderPath dell'esploratore attivo, che sembra essere quello giusto:

Outlook.Explorer currentExplorer = app.ActiveExplorer();
        if (currentExplorer != null)
        {
            ovcWrapper.Folder = currentExplorer.CurrentFolder.FolderPath;
        }

Questa è la traccia top dello stack:

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)..

Questo succede solo se la cartella si trova nel file PST non predefinito. Passare alla cartella all'interno del file PST predefinito non produrrà alcuna eccezione.

Devo sottolineare che tutto ha funzionato bene prima di andare in vacanza :). Sembra che Windows XP abbia installato alcuni aggiornamenti che hanno cambiato la protezione predefinita di Internet Explorer o Outlook 2003 mentre ero assente.

Dall'altro (macchina virtuale) con Office 2007 e Internet Explorer 6, senza aggiornamenti, tutto funziona perfettamente.

È stato utile?

Soluzione

Dopo un po ', finalmente scopro qual è la soluzione: cambiare un nome della memoria esterna in qualcosa di nuovo.

Durante l'avvio del componente aggiuntivo, carica il file PST non predefinito e cambia il suo nome (non il nome del file pst, ma il nome della cartella principale) in " Documents " ;.

Questo è il codice:

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);
 }

La soluzione non è più usare "Documenti" come nome, ma qualcosa di nuovo. Il problema non è correlato al nome specifico.

Altri suggerimenti

Dobri Dan, nency :)

Non so se posso davvero offrire un "proiettile d'argento". soluzione date le informazioni qui ... ma qui ci sono alcune idee / note da provare:

Avendo lavorato con Outlook su alcuni progetti in passato, posso dirti che a volte è un uccello divertente quando si tratta di dare / concedere l'accesso a utenti / processi esterni. A volte richiede all'utente di confermare manualmente l'accesso o il login ... quindi assicurati di averlo

app.Session.Logon() 

curato da qualche parte.

L'altra cosa che noto è l'uso di app.ActiveExplorer () Assicurati che questa funzione stia restituendo esattamente quello che pensi; Prende la finestra più in alto sul desktop dell'utente ... che di solito è ma non sempre la finestra con cui stai cercando di lavorare, quindi fai un doppio controllo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top