簡體   English   中英

如何在Outlook窗口中為收件箱中的郵件創建按鈕(雙擊郵件)?

[英]How to create a button in a outlook window for a mail from a inbox (double click on mail)?

我是程序員新手,我必須創建outlook 2007加載項。 我應該在功能區或任務欄上創建一個按鈕,但是在收件箱中的單個郵件窗口上。 您知道,當您雙擊收件箱中的郵件時,會出現新窗口。 在那個窗口中,我需要一個按鈕,打開一個帶有樹視圖的新表單。 我的主要問題是如何創建該按鈕。 這對我來說都是新的,所以我會非常感謝你的幫助。

好的,我做了一些研究,下面的代碼有點工作:)但是如果有經驗的人能看到這個並且告訴我它是否可以以及我可以改變它的方式,我將非常感激。 這只是更大項目的開始。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using System.Windows.Forms;

namespace OutlookAddInMishko
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {

            Inspectors = this.Application.Inspectors;
            Inspectors.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        #region VSTO generated code


        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion


          private Office.CommandBarButton buttonOne;

        private Outlook.Inspectors Inspectors;
        public static Microsoft.Office.Interop.Outlook.Inspector InsMail;

        void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
        {
            Outlook.MailItem tmpMailItem = (Outlook.MailItem)Inspector.CurrentItem;

            if (Inspector.CurrentItem is Outlook.MailItem)
            {
                tmpMailItem = (Outlook.MailItem)Inspector.CurrentItem;
                bool exists = false;
                foreach (Office.CommandBar cmd in Inspector.CommandBars)
                {
                    if (cmd.Name == "EAD")
                    {
                        //exists = true;
                        cmd.Delete();
                    }
                }

                Office.CommandBar newMenuBar = Inspector.CommandBars.Add("EAD", Office.MsoBarPosition.msoBarTop, false, true);
                buttonOne = (Office.CommandBarButton)newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, 1, missing, missing, true);

                if (!exists)
                {
                    buttonOne.Caption = "Scan this mail";
                    buttonOne.Style = Office.MsoButtonStyle.msoButtonCaption;
                    buttonOne.FaceId = 1983;

                    //Register send event handler
                    buttonOne.Click += new Office._CommandBarButtonEvents_ClickEventHandler(buttonOne_Click);
                    newMenuBar.Visible = true;
                }
            }


        }


        private void buttonOne_Click(Office.CommandBarButton ctrl, ref bool cancel)
        {
            ProcessMessages();
        }

        private Form1 form1 = null;

        private void ProcessMessages()
        {
            if (form1 == null)
            {
                form1 = new Form1(this.Application);
            }
            form1.ShowDialog();
        }


    }
}


namespace OutlookAddInMishko
{
    public partial class Form1 : Form
    {
        protected Outlook.Application App;
        public Form1()
        {
            InitializeComponent();
        }
        public Form1(Outlook.Application _app)
        {
            App = _app;
            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            label1.Text = "Total number of mails in inbox: " + App.ActiveExplorer().CurrentFolder.Items.Count.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Outlook.MailItem item = (Outlook.MailItem)App.ActiveInspector().CurrentItem;
            textBox1.Text += "From:    " + item.SenderName + "\r\n\n";
            textBox1.Text += "Subject: " + item.Subject + "\r\n\n";
            textBox1.Text += "Body: \r\n\n" + item.Body + "\r\n";
            textBox1.Text += "Mail contains:    " + item.Attachments.Count + " attachment(s).\r\n\n";
        }
    }
}

如果您打開窗口,在窗體頂部顯示郵件消息,則功能區上應該有幾個按鈕(保存,撤消,重做等)。 一直到右邊是一個向下的三角形,上面有一條線,工具提示說:自定義快速訪問工具欄。 單擊它,然后選擇“更多命令”。 在該屏幕中,選擇“自定義”選項卡。 我認為這是您添加按鈕以顯示表單的位置。 我沒有任何自定義表單,所以我無法驗證,希望這有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM