2009-06-30 21 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不起作用。

而且,当我告诉一个消息之前,我添加命令栏:一切工作正常,甚至与Outlook最小化,为什么?

编辑:
访问探险proprerty直接做工作,有人在回答说。因此,这解决了一个最小化的前景问题......但是......

其中的一个用户不使用Outlook最小化运行,任何GUI之前仍然插件加载可用。有没有连1名探险家探险收集:(这怎么可能在

编辑2:?
我试图用一个定时器由76mel的建议,检查ActiveExplorer为空每隔100ms这增加了按键如预期,但我可以设置按钮的图片属性

我得到这个异常:
灾难性故障(从HRESULT异常:0x8000FFFF(E_UNEXPECTED))

回答

2

如果没有UI =没有资源管理器:(

请尝试等待,直到Explorers.NewExplorer事件触发能够获取CommandBars对象。

更新: 是的,它看起来像一个计时器会做的伎俩OK有点哈克。 所以,当你有一个空的ActiveExplorer并检查ActiveExplorer onTick时,连接一个计时器。一旦用户弹出Outlook,你会得到活动的浏览器,然后你可以添加工具栏。

+0

不起作用,因为打开Outlook主窗口时未触发该事件。任何其他想法? – 2009-07-06 15:06:49

+0

对不起,它似乎在2007年不会开火。可能是一个计时器是其他方式去..从空开始检查空滴答和结束时不是空。我会玩... – 76mel 2009-07-06 17:28:46

2

我不熟悉托管的插件,但我找到了答案。 如果没有ActiveExplorer,请尝试直接访问Explorers集合,就像在Explorers [1]中一样。

我在ECE有同样的问题,并通过等待OnObjectChange回调当用户更改在Outlook中的文件夹,将被称为解决它,然后我尝试重新创建工具栏。这可能大致对应于Outlook对象模型中的FolderSwitch事件。

只是我的2C。