gpt4 book ai didi

c# - 如何在 outlook 窗口中为收件箱中的邮件创建一个按钮(双击邮件)?

转载 作者:行者123 更新时间:2023-11-30 15:49:14 24 4
gpt4 key购买 nike

我是程序员菜鸟,我必须创建 outlook 2007 加载项。我应该在功能区或任务栏上创建一个按钮,但在收件箱中的单个邮件的窗口上。您知道,当您双击收件箱中的邮件时,会出现新窗口。在那个窗口中,我需要一个按钮来打开一个带有一些 TreeView 的新表单。我的主要问题是如何创建该按钮。这对我来说是全新的,所以我将非常感谢您的帮助。

最佳答案

好吧,我已经做了一些研究,下面的这段代码有点管用 :) 但如果有经验的人能看到它并告诉我它是否可以以及我可以更改它的内容和方式,我将不胜感激。这只是更大项目的开始。

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

关于c# - 如何在 outlook 窗口中为收件箱中的邮件创建一个按钮(双击邮件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com