用户在一个word文档上点击鼠标右键,在弹出的右键菜单中选择发送到-》右键接收者, 这个时候弹出来的邮件对话框是什么对象? 怎么获取该对象,并添加一个新的Button。
我用的是ATL 7.0  vs2005 C++

解决方案 »

  1.   

    启动Outlook 后 点击新建按钮,产生的对话框是 inspector对象。  但从右键菜单中选择 发送到 邮件接收者 时,却得不到这个对象。
      

  2.   

    我用的是 _IDTExtensibility2 做的Outlook 外接程序。在进入程序的时候我弹出了一个消息框,说明我的Dll已经进入了Outlook进程
      

  3.   

    STDMETHOD(OnConnection)(LPDISPATCH Application, ext_ConnectMode ConnectMode, LPDISPATCH AddInInst, SAFEARRAY * * custom)
    {
    MessageBox(0,L"Enter OnConnection ",0,0); CComQIPtr<Outlook::_Application> spApp(Application);
                    CComPtr < Outlook::_Inspector> spInspector;
                    spApp->ActiveInspector ( &spInspector );
    m_spInspector = spInspector;
    if( m_spInspector )
    {
        MessageBox ( 0, L" m_spInspector ", 0,0);
        NewInspector((IDispatch *) m_spInspector);
    }
      

  4.   

    窗口都没出来你就开始找对象了?也太急了吧,呵呵。
    在OnConnection里面可以挂接_Application(?)的事件(应该是有个NewInspector事件的,但属于哪个对象发出的事件忘了,可能是Inspectors对象,自己查查资料),当邮件对话框启动时你会收到事件,然后才能找到对象。
      

  5.   

    是使用newinspector事件来通知,是inspectorsevents对象发出的事件
      

  6.   

    我连接了inspectorsevents 事件,但右键菜单创建了mail 没有反应, 只有 在explorer 对象上 点击 新建 按钮,才能得到事件
      

  7.   

    确保你的OnConnection已经被执行到了,或者说你的插件已经被加载了
      

  8.   


    能确保加载了Dll, jameshooo 说的对,窗口没有出来,找对象是不对的,但找不到别的好时机。 不知道有没有牛人能给个提示啊
      

  9.   

    1) 正常的新建email, 打开的窗口是一个Inspector对象, 并且可以通过Inspectors.NewInspector来获得这个对象。
    2) 在楼主提到的这种情况下, 没有生成Inspector对象, 而是直接用mail api来进行邮件操作的。
    3) 可以通过事件Application_ItemSend来过的即将发送的MailItem对象, 也就是程序级别的事件, 而Item级别的事件处理不了了。