2008-09-25 5 views
4

내가 만들려고 노력하고 임베디드는 Outlook 2003 추가 기능의 Windows XP SP3 및 Internet Explorer에서 Visual Studio 2008을 사용 7.Outlook보기 컨트롤

내 추가 내 사용자 지정 양식을 표시 사용자 지정 폴더 홈 페이지를 사용하고 있습니다 Outlook보기 컨트롤을 래핑합니다.

OVC의 Folder 속성을 설정할 때마다 Exception from HRESULT : 0xXXXXXXXX 설명과 함께 COM Exception이 발생합니다. 오류 코드는 임의의 숫자이며 매번 다를 수 있습니다. 그 전에는 View의 속성에 대한 첫 번째 액세스가 아니며 View 및 ViewXML 속성이 이미 설정되어 있습니다. 컨트롤은 스크립팅에 안전함으로 표시됩니다.

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

이 :

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

이 스택 추적의 상단입니다 :

나는 바로 하나를 것으로 보인다 활성 탐색기의 CurrentFolder.FolderPath 속성의 값을 사용하고 있습니다 폴더가 기본값이 아닌 PST 파일에있는 경우에만 발생합니다. 기본 PST 파일 내부의 폴더로 변경하면 예외가 발생하지 않습니다.

내가 휴일에 가기 전에 모든 것이 잘 작동한다는 것을 강조해야합니다. :). Windows XP가 부재 중일 때 Internet Explorer 또는 Outlook 2003의 기본 보안을 변경 한 일부 업데이트를 설치 한 것으로 보입니다.

Office 2007 및 Internet Explorer 6이 설치된 다른 (가상 컴퓨터)에서 업데이트가 없으면 모든 것이 잘 작동합니다.

을 갖는

+0

왜 COM 오류 코드를 제거 했습니까? – leppie

+0

때마다 달라서 COM 오류 코드를 가져 왔습니다.요즘 처음 4 개의 암호 만 다르다는 것을 깨달았지만 나머지는 항상 같았습니다 (0009). –

답변

2

잠시 후 마침내 해결책이 무엇인지 알아 냈습니다. 외부 저장소의 이름을 새로운 것으로 변경하십시오.

addin을 시작할 때 기본값이 아닌 PST 파일을로드하고 이름 (pst 파일의 이름이 아니라 루트 폴더의 이름)을 "Documents"로 변경합니다.

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

솔루션은 더 이상 이름, 그러나 새로운 무언가로 '문서'를 사용하지 않는 것입니다 :

는 코드입니다. 문제는 특정 이름과 관련이 없습니다.

1

Dobri 단, nency : 난 정말 몇 가지 아이디어를 여기에 정보 주어진 "실버 총알 '솔루션을 제공합니다 ...하지만 여기 수있는 경우

는 나도 몰라/시도 노트 과거에 몇 가지 프로젝트에서 Outlook으로 작업 해본 결과 외부 사용자/프로세스에 대한 액세스 권한을 부여하거나 부여하는 경우 가끔 재미있는 새라고 말할 수 있습니다. 사용자가 직접 액세스 또는 로그인을 확인해야하는 경우가 있으므로 ...

app.Session.Logon() 

어딘가에 처리해야합니다.

다른 주목해야 할 점은 app.ActiveExplorer()입니다.이 함수가 여러분이 생각하는 것과 똑같은 것을 반환하는지 확인하십시오. 항상 사용자의 바탕 화면에 창이 걸립니다. 보통은 이지만 항상 작동하지는 않습니다. 작업을 시도하는 창이므로 더블 체크하면됩니다.

+0

답 : 예 : 세션이 이미 로그인되어 있고 다시 로그온하려고 시도하면 아무런 결과가 없습니다. 반환 된 참조가 때때로 null 인 경우를 제외하고는 활성 탐색기가 항상 올바른 것 같습니다. 갑자기 변경된 보안 설정에 문제가있는 것일 수 있습니다. –