arşiv

yazılar buna göre etiketlendi; ‘C#’

C# ile Outlook 2007 Üzerinde Randevu Oluşturma ve Okuma

Cumartesi, 06 Şub 2010 burakkanmaz 2 yorum

C# ile, ister Outlook Add-In ister normal bir Windows Form uygulaması yaparken eğer Outlook üzerindeki takvim verilerine (randevulara) erişmek ve yeni randevular oluşturmak kolaylıkla yapılabilmektedir. Bu amaçlar için oluşturduğum metotları beraber inceleyelim.

Öncelikle yeni bir randevu oluşturalım,

using Outlook = Microsoft.Office.Interop.Outlook;

public void CreateAppointment(string subject, string location, string body, DateTime startDate, DateTime endDate)
        {
            var outlookApp = new Outlook.Application();
            var oAppointment =
                (Outlook.AppointmentItem)outlookApp.CreateItem(Outlook.OlItemType.olAppointmentItem);
            oAppointment.Subject = subject;
            oAppointment.Location = location;
            oAppointment.Body = body;
            oAppointment.Start = startDate;
            oAppointment.End = endDate;
            oAppointment.ReminderSet = true;
            oAppointment.ReminderMinutesBeforeStart = 15;
            oAppointment.ReminderPlaySound = true;
            oAppointment.Importance = Outlook.OlImportance.olImportanceHigh;
            oAppointment.BusyStatus = Outlook.OlBusyStatus.olBusy;
            oAppointment.Save();
        }

Bu metod sırasıyla öncelikle Outlook’a bağlanıyor, ardından yeni bir Appointment (randevu) oluşturuyor.

Daha sonra bu randevunun Subject (Konu) kısmını, Location (Konum, Yer) kısmını, başlama ve bitiş tarihlerini metot tanımlamasından alarak yazıyoruz. Eğer dilersek bu randevuyu 15 dakika kalasıyla hatırlatmasını sağlıyoruz ve bu hatırlatmayı yaparken ses çalmasını da ayarlıyoruz. Diğer yüksek öncelikli ve durumu meşgule çevirme seçeneklerimizi de belirledikten sonra Save komutu ile bu randevuyu Outlook’a kaydediyoruz.

Outlook içerisinde ki tüm takvim öğelerini kullanmak için ise şu metodu kullanabiliriz.

public List<Outlook.AppointmentItem> GetAppointments()
        {
            var outLookApp = new Microsoft.Office.Interop.Outlook.Application();
            Outlook.NameSpace nms = outLookApp.GetNamespace("MAPI");
            Outlook.MAPIFolder mpiFolder = nms.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
            string body;
            var appItems = new List<Outlook.AppointmentItem>();
            foreach (Outlook.AppointmentItem task in mpiFolder.Items)
            {
                appItems.Add(task);
            }
            return appItems;
        }

Bu metot ile takvimdeki tüm öğeleri alacağız. Öncelikle Outlook’a bağlanmak için gerekli tanımımızı yapalım. Daha sonra MAPI klasörlerine erişmek için bir nesnemizi oluşturalım ve bu bağlantıyı Calendar ile ilişkili olarak başlatalım.

Ardından geri döndürmek için Outlook’un AppointmentItem nesne tipini tutacak bir liste oluşturalım. Daha sonra foreach ile MAPI klasöründe ki tüm takvim öğeleri arasında gezinerek listemize atalım. Son olarak listemizi geri döndürelim ve kullanalım.

İşte bu kadar basit bir şekilde Outlook Takvim öğelerine erişebilir ve yönetebilirsiniz. Bu metotları geliştirmek sizin elinizde ;)

C# ile RichTextBox’tan Veri Okuyup Yazmak

Cumartesi, 06 Şub 2010 burakkanmaz 2 yorum

Bugün Imagine Cup projemizde ekip içerisinde daha rahat kod transferi ve kopyama yapıştırma yapmak amacıyla 30-40 dakika uğraşıp bir program yazdım. Bu program sayesinde aşağıdaki bilgiyi öğrendim ve sizlerle paylaşıyorum.

C# ile RichTextBox’tan biçimli (renkli ve formatlı) yazı okumak ve yazmak için yapmanız gereken şey,

rtb1.Rtf.ToString(); // TextBox’un içerisinde ki veriyi RTF şekilde okumak için

yazmak için ise,

rtb1.Rtf = blabla // TextBox’un içerisine RTF formatlı veri yazmak için blabla değişkeni yerine verinizi yazın.

Projemiz için yaptığım örnek aşağıda. Amacı takım içerisinde senkronize bir şekilde hızlı kod paylaşımı :)

image

C# ile SSL Kullanarak Mail Göndermek

Pazar, 31 Oca 2010 burakkanmaz 3 yorum

.NET ile SSL (https) kullanarak mail göndermek için hazırladığım ve bir çok projede kullandığım kodları sizlerle de paylaşmak istiyorum.

Öncelikle şu iki kütüphaneyi kodumuzun en üstüne yazarak sayfamıza referans gösteriyoruz.

using System.Net; // Güvenlik doğrulaması için gerekiyor
using System.Net.Mail; // Mail gönderimi için kullanılacak kütüphane

Daha sonra mail nesnelerimizi oluşturalım,

SmtpClient smtpClient = new SmtpClient(); // Yeni bir SMTP bağlantı nesnesi
MailMessage mailMessage = new MailMessage(); // Yeni bir mail mesajı nesnesi

Hemen ardından öncelikle mail nesnemize bilgileri girerek göndereceğimiz e-mail ayarlarını yapalım,

mailMessage.To.Add("burak@kanmaz.net");
// ^– Mailin gönderileceği kişi, eğer dilerseniz Add metodu ile birden fazla kişiyi ekleyebilirsiniz. Ya da Bcc.Add ve Cc.Add metotlarını da kullanabilirsiniz.
mailMessage.From = new MailAddress("isim@soyisim.com"); // Gönderen e-mail adresi
mailMessage.Subject = "Sitemize Hoşgeldiniz"; // E-Mailin başlığı
mailMessage.IsBodyHtml = true; // Eğer HTML bir mail gönderecekseniz true olmalı
mailMessage.Body = "Merhaba <b>Burak</b>"; // Mailinizin içeriği

Evet, şimdi e-mailimizi hazırladığımıza göre hemen bağlantı ayarlarımızı yapıp e-mailimizi gönderelim,

NetworkCredential networkCredential = new NetworkCredential("isim@soyisim.com", "123456");
// ^—SMTP Auth yapabilmemiz için göndericinin e-mail bilgilerini yazmalıyız.
smtpClient.Credentials = networkCredential; // Bu bilgiler ile SMTP oturumunu açacağız
smtpClient.Port = 587; // SMTP bağlantı portumuzu belirliyoruz.
smtpClient.Host = "smtp.soyisim.com"; // Mail sunucumuzun adresi
smtpClient.EnableSsl = true; // SSL kullanarak bağlanmak istediğimiz için true yapıyoruz

Süperiz, tüm ayarlarımızı yaptıktan sonra son olarak mailimizi gönderiyoruz..

smtpClient.Send(mailMessage);

Eğer dilerseniz tüm bu kodları bir try-catch bloğuna koyarak daha kararlı bir kod yazmış olursunuz.

Unutmadan şunu da ekleyelim, bu bir C# kodu olduğu için bu şekilde e-mail gönderimini hem ASP.NET ile web üzerinden hem de masaüstü uygulaması (Windows Form) üzerinden yapabilirsiniz.

C# ve VB.NET Kodlarını Birbirine Çevirin

Pazar, 18 Eki 2009 burakkanmaz 3 yorum

CodeChanger isimli web sitesi online olarak sizin yazdığınız C# ve VB.NET kodlarını birbirine başarılı bir şekilde dönüştürüyor. Öyle ki çok büyük C# projelerinizi bile multiple convert kısmından VB.NET’e çevirebiliyorsunuz.

Siteyi şuradan ziyaret edebilirsiniz.

image

Makale | Web Servisleri ve Kullanımı

Pazartesi, 01 Haz 2009 burakkanmaz yorum yok

Merhaba arkadaşlar, bu makalemde sizlere web servisleri hakkında kısa bir bilgi verip, küçük bir web servisi oluşturmayı anlatacağım.

Web servislerini basitçe, farklı dillerle ve platformlarla yazılan web siteleri arasında HTTP (80 numaralı port) protokolünü kullanarak bilgi alışverişi şeklinde tanımlayabiliriz. Örnek vermek gerekirse, yapacağınız bir masaüstü programınıza günlük döviz kurunu gösteren bir modül yapmak isterseniz, yapmanız gereken tek şey merkez bankasının günlük döviz kurunu veren web servisine bağlanıp verileri almak. Peki, bu nasıl olacak? Gelin hep beraber işin kodlama kısmına geçelim ve öğrenelim.

Öncelikle Visual Studio’muzu açalım ve File->New Project deyip aşağıdaki resimdeki ekrana ulaşalım. Daha sonra Web’i seçip ASP.NET Web Service Application’ı seçelim.

clip_image002

Visual Studio bizim yerimize Service1.asmx dosyası oluşturdu ve bu sayfanın kod kısmında (Service1.asmx.cs) bizim yerimize örnek bir metot oluşturdu. Gördüğünüz gibi oluşturulan örnek metodun başında [WebMethod] şeklinde bir tanımlama var. Bu bizim metodumuzun web servisi üzerinde kullanılabileceğini, yani dışarıdan erişilebileceğini belirtmektedir. Şimdi bu metodu değiştirelim ve kendisine gönderilen bütün sayıları toplayan bir Topla metodu tanımlayalım. Ek olarak da basit bir Carp metodu tanımlayalım.

[WebMethod]

        public int Topla(params int[] sayilar)

        {

            int sonuc = 0;

            foreach (int sayi in sayilar)

            {

                sonuc += sayi;

            }

            return sonuc;

        }

[WebMethod]

        public int Carp(int a, int b)

        {

            return a * b;

        }

Metodumuz, params int[] sayilar ifadesiyle kendisine gönderilen bütün verileri almaktadır. Daha sonra sonuc isminde bir değişken tanımlıyoruz ve sıfıra eşitliyoruz. Bu değişken bizim sonucumuzu tutacak. Daha sonra foreach (int sayi in sayilar) ifadesiyle metodumuza gelen sayıları alıyoruz. Ve bu sayıları sonuc değişkeni ile toplayıp return sonuc; ile sonucu gönderiyoruz.

 

Şimdi projemizi F5 ile çalıştırırsak aşağıdaki ekranı göreceğiz.

 

clip_image004

 

Buradaki “Service1” ismi bizim servisimizin adı, “Topla” ve “Carp”  ise bizim tanımladığımız metotlardır. Bizim bu web servisimizi kullanmak isteyen birisi “Service1” servisi altından “Topla” ve “Carp” metoduna erişebilecektir. Şimdi ise yaptığımız bu web servisini kullanacak bir örnek yapalım.

 

Basit olması açısından, bir konsol örneği olsun. Dikkat etmemiz gereken önemli bir nokta var. Bu web servisimiz şu anda local’de çalıştığı için eğer visual studio’yu kapatırsak web servisimizde kapanır ve erişemeyiz. Bu nedenle bu örneğimizi yapmak için yeni bir visual studio açalım ve bir tane konsol uygulaması oluşturalım.

 

Solution Explorer içerisindeki “References” a sağ tıklayalım ve “Add Service Reference…”a tıklayalım.

clip_image006

 

Açılan penceredeki adres satırına ise bizim web servisimizin adresini yazalım.

 

clip_image008

 

Adresi yazdıktan sonra “Go” butonuna basalım. Servisimiz aşağıdaki gibi listelenecektir.  Bir NameSpace verip tamam diyelim.

 

clip_image010

 

Daha sonra servisimizi kullanabilmek için önce o servisin bir nesnesini oluşturmamız gerekmektedir.

 

ServiceReference1.Service1SoapClient webServisimiz;

webServisimiz = new ServiceReference1.Service1SoapClient();

 

Bu 2 satır ile “webServisimiz” adında bir nesne oluşturduk. Şimdi ise servisimize erişebiliriz. Basit olarak önce Carp metodumuzu kullanalım.

 

Console.WriteLine("Çarpma Sonucu : " + webServisimiz.Carp(5, 4));

 

Altı çizili kırmızı renkli yerde gördüğünüz gibi basitçe web servisimizi çağırdık. Bu metot 5 ile 4 ü çarpıp sonucu int tipinde bize gönderecektir.

 

“Topla” metodumuzda durumlar biraz farklı. Çünkü bu metodumuza gönderilecek parametre sayısını değişken yaptık. Yani 1 tane sayı da gönderebiliriz, 1000 tane de. Bu nedenle öncelikle,

 

ServiceReference1.ArrayOfInt gonderilecekVeriler;

gonderilecekVeriler = new ServiceReference1.ArrayOfInt();

 

şeklinde “gonderilecekVeriler” şeklinde bir tamsayı dizisi oluşturmamız gerekiyor. Burada önemli olan kısım oluşturduğumuz değişken Service1’in belirlediği bir tipte (yani ArrayOfInt tipinde) olmasıdır. Daha sonra,

 

for (int i = 1; i <= 10; i++)

{

gonderilecekVeriler.Add(i);

}

 

kodu ile de 1 den 10 a kadar olan bütün sayıları “gonderilecekVeriler” tamsayı dizisine ekleyelim.

 

Console.WriteLine("Toplama Sonucu : " + webServisimiz.Topla(gonderilecekVeriler));

 

şeklinde de verilerimiz Topla metodumuza gönderip sonucu ekrana yazdıralım. Ekranımız aşağıdaki gibi olacaktır,

 

clip_image012

 

Gördüğünüz gibi, uzaktaki bir web servisine bağlanarak verip gönderip, gelen cevabı yönetebildik. Yine bu şekilde merkez bankasından günlük kurları çekebilir, TC Kimlik numarası sorgulayabilir ve daha birçok online hizmeti programınıza ekleyebilirsiniz.

Not : İsteyen arkadaşlar buraya tıklayarak bu örneklerin kodlarını indirebilirler.

Eğlenceli ve bol kodlamalı günler dilerim :)

Burak Kanmaz
Microsoft Student Partner / Turkey
Istanbul University Computer Engineering #3
www.burakkanmaz.net | burak@kanmaz.net
+90 538 778 9086 | +90 506 842 8976

C# ile Outlook Verilerinize Erişin

Salı, 03 Mar 2009 burakkanmaz 2 yorum

C# ile Outlook’a bağlanıp verileri istediğiniz gibi düzenleyebilir ve okuyabilirsiniz.
Öncelikle projenize add reference tıklayıp oradan COM kısmından Microsoft Outlook Object Library eklemeniz gerekli.
Daha sonra aşağıdaki kodları kullanabilirsiniz.

// projemizin en tepesine bu using tanımlamasını yapmamız gerekmekte
// using Outlook = Microsoft.Office.Interop.Outlook;
// daha sonra herhangi bir olay altına bu kodları yazabilirsiniz
Outlook._Application outlook;
Outlook.NameSpace ns;
Outlook.MAPIFolder cf;
Outlook.Items contacts;
Outlook.ContactItem contact;
// Outlook'a bağlanıyoruz
outlook = new Outlook.ApplicationClass();
// MAPI klasorlerine erişim yapıyoruz
ns = outlook.GetNamespace("MAPI");
// olFolderContacts yazarak Kişiler klasörüne erişiyoruz
cf = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
// default olarak tüm kişileri bir Items değişkenine atıyoruz.
contacts = cf.Items;
// Artık bir kişi seçmek istediğimizde contact değişkenine alabileceğiz.
// Burada Find ile tam adı Burak Kanmaz olan kişiyi seçiyoruz.
contact = (Outlook.ContactItem)contacts.Find("[FullName] = 'Burak Kanmaz'");
// textbox1 e kişinin cep telefonunu yazdırıyoruz.
textBox1.Text = contact.MobileTelephoneNumber.ToString();
// burada sınıfların alt öğelerini inceleyip ihtiyacınıza göre bütün verilere erişebilir
// ve onları düzenleyebilirsiniz.
Categories: Günlük Tags: , ,

C# ile Yazdığınız Kodların Performansını Ölçün

Pazartesi, 23 Şub 2009 burakkanmaz 2 yorum

perf_testC#’ta kod yazıyorsunuz ama hangi kodların daha hızlı olduğunu bilemiyor musunuz? Artık bileceksiniz :) İşte karşınızda internetten bulup biraz daha düzenleyip geliştirdiğim “Performance Test” programı. Bu C# projesine çalışmasını istediğiniz kod u ekliyorsunuz ve Run butonuna bastığınız her seferde kodu çalıştırıp süresini ekrana basıyor. 30 defa çalıştırıp ortalama süreyi alarak faydalı sonuçlar çıkarabilirsiniz :) Projenin çalışma süresini hesaplayıp size gösteriyor.

Kodunuzu nereye yapıştıracağınız proje kodları içerisinde yazıyor. Projeyi indirmek için buraya tıklayın.