2009-06-30 3 views
2

원본 게시물 :
Outlook을 시작하면 추가 기능이로드 및 일부 버튼과 도구 모음을 추가한다.이 명령 모음을 만들 수 없습니다 (Outlook 2007의 추가 기능)

toolBar = OutlookApp.ActiveExplorer().CommandBars.Add(MENU_TAG, MsoBarPosition.msoBarTop, false, true); 

모든 것이 잘 작동했지만 이제는 한 명의 사용자가 Outlook을 실행하도록 설정된 Outlook 바로 가기를 최소화했습니다.

OutlookApp.ActiveExplorer()은 null을 반환합니다. ActiveExplorer이있을 때 잡아서 명령 모음을 추가 할 때 사용할 수있는 이벤트가 있습니까?

OutlookApp.Explorers.NewExplorer가 작동하지 않습니다.

또한 CommandBar를 추가하기 전에 messagebox를 표시하면 모든 것이 잘 작동하고 Outlook을 최소화해도 ... 이유는 무엇입니까?

편집 : 누군가가 대답했다대로 탐험가 액세스
직접 작업을했다 proprerty. 그래서 이것은 최소화 된 전망을위한 문제를 해결합니다 ... 그러나 ...

사용자 중 하나는 최소화 된 Outlook 실행을 가지고 있지 않으며, GUI가 사용 가능하기 전에 여전히 플러그인이로드됩니다. 탐험가 수집 :(이 가능한 방법의조차 한 탐험가에게 있습니다

편집 2 :?. 널 위해 100ms마다 ActiveExplorer을 확인 76mel에 의해 제안 내가 타이머를 사용하여 시도
이것은 추가 예상대로 버튼을하지만 버튼의 그림 속성을 설정할 수 있습니다

을 나는이 예외를 얻을 :.
치명적인 오류 (HRESULT에서 예외 : 0x8000ffff는 (E_UNEXPECTED))

답변

2

UI가없는 경우 = 탐색기 없음 :(

Explorers.NewExplorer 이벤트가 발생하여 CommandBars 개체를 가져올 때까지 기다려보십시오.

업데이트 : 예 타이머가 해킹 할 것 같습니다. 널 ActiveExplorer가 있고 ActiveExplorer onTick을 확인하면 타이머를 연결하십시오. 사용자가 아웃룩을 보게되면 활성 탐험가가 생기고 툴바를 추가 할 수 있습니다.

+0

Outlook 기본 창을 열 때 해당 이벤트가 시작되지 않으므로 작동하지 않습니다. 다른 아이디어? –

+0

예. 미안하지만 2007 년에는 발사되지 않습니다. 5 월 타이머가 될 수 있습니다 .. 그 진드기에 null을 확인 시작하고 null이 아닌 경우 끝납니다.나는 게임을 할 것이다 ... – 76mel

+0

타이머를 사용할 때 버튼에 아이콘을 설정할 수 없다. 나는이 굉장한 예외를 얻는다 : "치명적인 실패 (HRESULT에서 예외 : 0x8000FFFF (E_UNEXPECTED))" –

2

관리되는 추가 기능에 익숙하지 않지만이 답변을 발견했습니다. ActiveExplorer가 없으면 탐색기 [1] 에서처럼 Explorers 컬렉션에 직접 액세스하십시오.

내 ECE에서 동일한 문제가 발생하여 사용자가 Outlook에서 폴더를 변경할 때 호출 될 OnObjectChange 콜백을 기다리고 해결 한 다음 툴바를 다시 만들려고합니다. 이는 Outlook 개체 모델의 FolderSwitch 이벤트와 대략 일치 할 수 있습니다.

그냥 2c입니다.

+0

감사합니다. 이것은 내가 이야기하고있는 경우에 해결했습니다. 하지만 이제 또 다른 관련 문제가 있습니다. 또한 전에 OnObjectChange 시도했지만 사용자가 Outlook에서 뭔가를 클릭 할 때 도구 모음을로드하기 때문에 일종의 awkard. –

+0

예, 당신 말이 맞습니다.하지만 사소한 불편과 사용자가 함께 살 수 있다고 생각합니다. 적어도 내 플러그인에. 우리가 반응해야 할 사건이 반드시 있어야합니다. 나는 타이머 해결책의 친구가 아니다. –

+0

나는 Petr에게 동의한다. 이것은 매우 해킹 적이지만 OOM은 개발자에게 친숙하지 않다. 이 기술은 2000 년 이래로 오랜 시간 동안 사용되어 왔습니다. – 76mel