Friday, September 16, 2005

Visual Studio.NET ile Outlook 2003 Uygulamaları - Attachment lar ile oynamak

Visual Studio 2003 ile managed code kullanarak Outlook'u yönetmek ve üzerinde uygulama geliştirmek mümkün. Çoğu zaman kodu sıfırdan yazmak yerine daha önce geliştirilmiş olan örnekleri kullanıp, bu örnekleri değiştirmek işleri hızlandırabiliyor. Böyle bir örneği inceleyelim:

Visual Studio.net 2003 öncelikle bir Com Add-in oluşturuyoruz. Visual Studio’da Com Add-in uygulamaları oluşturmak için: http://support.microsoft.com/?kbid=302901 adresindeki makaleden yararlanabilirsiniz.

- Yukarıdaki makaleyi inceledikten sonra Extensibility.IDTExtensibility2 interface’i hakkında bilgi edinmiş olacaksınız. Bir buton oluşturmak için bu interface’in OnStartupComplete prosedüründe aşağıdakine benzer bir kodla Outlook Standard toolbar’ında istediğiniz butonu ekleyebilirsiniz:

CommandBars oCommandBars;
CommandBar oStandardBar;

try
{
oCommandBars = (CommandBars) myApplication.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty, null, myApplication, null);

}
catch (Exception)
{
object oActiveExplorer;
oActiveExplorer = myApplication.GetType().InvokeMember("ActiveExplorer", BindingFlags.GetProperty, null, myApplication, null);
oCommandBars = (CommandBars) oActiveExplorer.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty, null, oActiveExplorer, null);

}

try
{
oStandardBar = oCommandBars["Standard"];
}
catch (Exception)
{
oStandardBar = oCommandBars["Database"];
}

try
{
MyButton = (CommandBarButton) oStandardBar.Controls["My Button"];
}
catch (Exception)
{
object omissing = System.Reflection.Missing.Value;

MyButton = (CommandBarButton) oStandardBar.Controls.Add(1, omissing, omissing, omissing, omissing);
MyButton.Caption = "My Button";
MyButton.Style = MsoButtonStyle.msoButtonCaption;
}

MyButton.Tag = "My Button";
MyButton.OnAction = "!";

MyButton.Visible = true;
MyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);

- Burada MyButton_Click gibi bir methodda System.IO class’ını ve MailItem.SaveAs methodunu kullanarak mesajları kaydedebilirsiniz. Örneğin o an seçili mesajı kaydetmek için:

using OL= Microsoft.Office.Interop.Outlook ;
...
OL.MailItem mailItem = (OL.MailItem) myApplication.ActiveExplorer().Selection[1];
MailItem.SaveAs ...


Bir hatırlatma… Visual Studio.net 2003’de Com Add-in uygulaması oluştururken VS eski Office DLL’lerini kullanmakta. Uygulamaya başlamadan önce Referanslardan yeni COM class’ını eklemeyi unutmayın.

Son olarak Visual Studio Tools for Office 2005 ile birlikte çok daha kolay bir şekilde Office uygulamaları geliştirebeceğinizi hatırlatırım. Tabi bunun için biraz daha beklememiz gerekecek. :)

No comments: