Makale Özeti

Merhabalar, bu yazı dizimizde amacımız VSTO ile Outlook eklentilerinin nasıl geliştirildiği, VSTO’nun yeteneklerini ve geliştirdiğimiz programın kurulum projesinin nasıl hazırlandığını anlatmaya çalışacağım. Outlook menüsü, toolbar, context menü oluşturma, mail, takvim(calendar), kişiler (contacts) ve görevler(tasks) objeleriyle çalışma yazılarımızın içeriğini oluşturacaktır.

Makale

VSTO ile Outlook Addin Uygulamaları – I

 

Merhabalar, bu yazı dizimizde amacımız VSTO ile Outlook eklentilerinin nasıl geliştirildiği, VSTO’nun yeteneklerini ve geliştirdiğimiz programın kurulum projesinin nasıl hazırlandığını anlatmaya çalışacağım. Outlook menüsü, toolbar, context menü oluşturma, mail, takvim(calendar), kişiler (contacts) ve görevler(tasks) objeleriyle çalışma yazılarımızın içeriğini oluşturacaktır.

 

VSTO kısaltmasının açılımı Visual Studio Tools for Office şeklindedir. Bilindiği üzere Microsoft Office uygulamalarına VBA kullanarak eklentiler yazabiliyorduk. Ancak Visual Studio bu konuda bize daha esnek imkanlar sunuyor. Böylelikle “Windows Forms Application” çalışma alışkanlılarımızı Office eklentilerine de yansıtabiliyoruz.

 

Bu yazı dizisindeki örneğimiz Outlook eklentisi şeklindedir. Ancak burada yer alan temel bilgileri diğer Office uygulamalarında da kullanabiliriz.

 

Visual studio programımızda yeni bir proje açalım. Yeni proje ekranımızda “Office” kategorisinde “Outlook 2003 addin” template’ini görebilirsiniz.

 

 

Bilgisayarınızda Office 2007 kurulu ise muhtemelen 2007 templatelerinide görebilirsiniz. Birçoğunuzun aklına neden 2007 değil de 2003 projesi üzerinde çalışacağız gibi bir soru gelebilir. Çünkü 2003 projelerimizi Office 2007 sürümünde kullanabiliyoruz ancak 2007 projeleri 2003 de çalışmayacaktır. (örn ribbon menüler). Türkiye koşullarında birçok küçük işletme Office 2003 kullanmaya devam etmektedir. Ancak buradaki yazımızda yer alan örneklerin büyük çoğunluğu 2007 de projelerinde de çalışmaktadır. Önemli olan nokta, bilgisayarınızda Office 2003 yüklü değilse proje oluşturamazsınız daha doğrusu “Debug” etme ve yazdığınız programı çalıştırma şansınız bulunmamaktadır.

 

Projemizi adlandırıp oluşturduktan sonra solution’umuzda 2 adet proje göreceksiniz. Bunlardan biri programımızı bitirdiğimizde kurulum dosyalarını hazırlamamıza yarayan “Setup” projesidir. Diğeri ise bizim Outlook addin projemizdir.

 

Projemizle birlikte otomatik olarak oluşan ThisAddIn.cs adında bir dosyamız bulunmaktadır. Bu dosya Outlook Programının başlangıcında ve kapanışında(vb diğer olaylarda) belirlediğimiz olayların koşmasında yardımcı olacaktır.

 

private void ThisAddIn_Startup(object sender, System.EventArgs e)

{

}

 

Bu kod bloğu Outlook Programı çalıştığı anda koşacak olan olayımızdır. İlk örneğimizde outlook programına bir menü bar oluşturacağız. Oluşturduğumuz bu menü bar’a bir button ekleyeceğiz ve bu buttona basıldığında bir mesaj kutusu açacağız. Tabiki outlookta bir menü oluşturup bu menüdeki bir butona basıldığında mesaj kutusu açmak pratikte çokta işe yarayan bir program gibi görünmesede ileride yapacağımız işlemler için temel taşı olacaktır.

 

ThisAddIn dosyamızda ilk önce bir command bar, Command BarPopup ve command bar button tanımlaması yapalım.

 

private Office.CommandBar _obj_YazGelistir_MenuBar;

private Office.CommandBarPopup _obj_YazGelistir_PopupBar;

private Office.CommandBarButton _objBtn_HelloMsgBox;

 

Daha sonra Menu Barımızı oluşturacak fonksiyonumuzu yazalım

 

private void YazGelistir_MenuBar()

{

//Eğer hazırlayacağımız menü, menü barda varsa ilk önce onu siliyoruz. (tekrar olmasın)

try

{

// ismi yazgelistir olan bar popup'ımızı buluyoruz

Office.CommandBarPopup _objIsMenueExist = (Office.CommandBarPopup)

this.Application.ActiveExplorer().CommandBars.ActiveMenuBar.

FindControl(Office.MsoControlType.msoControlPopup, missing, "YazGelistir", true, true);

 

if (_objIsMenueExist != null)

{

//eğer varsa siliyoruz.

_objIsMenueExist.Delete(true);

}

}

catch (System.Exception ex)

{

//Hata

}

 

try

{

// Mevut olan menü barımızı buluyoruz. Menü bar outlook programımızın en üstünde bulunan menü grubudur

// "Dosya, Düzen vb"

_obj_YazGelistir_MenuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar;

 

//Bulduğumuz menü bara yeni bir popbar ekliyoruz. Yani üst bulunan menüde Dosya menüsünü açtığımızda

//aşağıya doğru açılan menü Outlookda BarPopup olarak geçmektedir.

_obj_YazGelistir_PopupBar = (Office.CommandBarPopup)_obj_YazGelistir_MenuBar.Controls.Add(Office.MsoControlType.msoControlPopup

, missing

, missing

, missing

, false);

 

 

if (_obj_YazGelistir_MenuBar != null)

{

 

//Oluşturduğumuz popup bar'a bir button eklememiz gerekiyor ki bastığımızda istediğimiz olay koşsun.

_objBtn_HelloMsgBox = (Office.CommandBarButton)_obj_YazGelistir_PopupBar.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, 1, true);

 

//Butonumuzun tipini ayarlıyoruz. Ben icon ve yazıdan(caption) oluşan bir tip belirliyorum.

_objBtn_HelloMsgBox.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;

 

//Caption belirliyoruz.

_objBtn_HelloMsgBox.Caption = "Merhaba Dünya"; //Örnek uygulamaların vazgeçilmezi "Hello World"

 

// Butona bir etiket atıyoruz. Daha sonra gerektiğinde bulmamızı sağlayacak tanımlama da diyebiliriz.

_objBtn_HelloMsgBox.Tag = "Merhaba Dünya";

 

//Butonun solunda görünecek ikonu belirliyoruz. Window office ait mevcut ikonlardan kullanıyoruz.

// İkon numaraları listesi http://www.kebabshopblues.co.uk/2007/01/04/visual-studio-2005-tools-for-office-commandbarbutton-faceid-property/ adresinde görebilirsiniz.

_objBtn_HelloMsgBox.FaceId = 2605;

 

// Butona bastığımızda bir olay koşmasını istiyoruz. O yüzden Button_ClickEvent olarak hazırladığımız bir olayı atıyoruz.

_objBtn_HelloMsgBox.Click += this.Button_ClickEvent;

 

 

// Yeni popup barımızı Görünür yapıp, caption ve etiket belirliyoruz

_obj_YazGelistir_PopupBar.Visible = true;

_obj_YazGelistir_PopupBar.Caption = "Yaz Geliştir";

_obj_YazGelistir_PopupBar.Tag = "YazGelistir";

 

}

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show("Error: " + ex.Message.ToString()

, "Error Message");

}

}

 

 

// Butonumuza ait click olayı.

private void Button_ClickEvent(Office.CommandBarButton ctrl, ref bool cancel)

{

MessageBox.Show("Merhaba Dünya", "Yaz Geliştir");

}

 

 

Gördüğünüz üzere ilk Outlook eklentimizi yapmış bulunuyoruz. Tabi ki bu fonksiyonumuzu yazdıktan sonra “ThisAddinStartup” olayından yazdığımız fonksiyonumuzu çağırmamız gerekmektedir.

 

private void ThisAddIn_Startup(object sender, System.EventArgs e)

{

YazGelistir_MenuBar();

}

 

Programımızı F5 ile derleyip çalıştırdıktan sonra şöyle bir ekran elde etmeniz gerekir.

 

 

Merhaba Dünya Butonuna bastığımızda da hazırladığımız olay çalışacak ve mesaj kutusu görünecektir. Gördüğünüz üzere butonumuzun bir adet ikonu bulunmaktadır. Siz kendi seçeceğiniz bir FaceID ile bunu çeşitlendirebilirsiniz.

 

İlk yazımızda menü bar’a nasıl yeni bir menü ekleyip istediğimiz olayları koşturduğumuzu anlatmaya çalıştım. Bir sonraki yazıda, mesaj kutusu yerine kendi oluşturduğumuz bir “Windows Form” açacağız ve açtığımız bu forma seçili mail objesini göndereceğiz. Mail objesi üzerinde işlem yapıp mailimizi veri tabanımıza kayıt edeceğiz.

 

 

Melih KORKMAZ