March 26, 2007
@ 01:17 AM

Msn'i biraz daha zevkli hale getirmek tamamen elimizdeymiş de haberim yokmuş ;) Peltek konuşmak mı yoksa karşıdaki size ne yazdı ise sizin de ona aynı cümlenin tersten yazılmışını göndererek sinir etmek mi istersiniz. ;) Ufak çaplı bir kod...

Projenize (ClassLibrary) öncelikle C:\Program Files\MSN Messenger\MessengerClient.dll 'i (Sevgili Özcan Değirmenci'nin geliştirdiği FOX Decompiler'i ile bu dll'i bir inceleyin derim) referans olarak ekliyorsunuz. Bir de geliştirdiğiniz AddIn'i Msn Messenger'e ekleyebilmek için -AddIn ekleme bölümü kapalı geliyor - Registry'deki HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger Key'ine AddInFeatureEnabled isimli DWORD Value ekleyip değerini 1 yapıyoruz.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Messenger;

public class Peltek:IMessengerAddIn
{
    MessengerClient m;
    public void Initialize(MessengerClient messenger)
    {
        m = messenger;
        m.AddInProperties.Creator = "Oğuz YAĞMUR";
        m.AddInProperties.Description = "Peltek konuştuvuv";

        messenger.OutgoingTextMessage += new EventHandler<OutgoingTextMessageEventArgs>(messenger_OutgoingTextMessage);
        messenger.IncomingTextMessage += new EventHandler<IncomingTextMessageEventArgs>(messenger_IncomingTextMessage);
    }

    void messenger_IncomingTextMessage(object sender, IncomingTextMessageEventArgs e)
    {

        //if (m.AddInProperties.Status == UserStatus.Busy)

        char [] ch = e.TextMessage.ToCharArray();
        Array.Reverse(ch);
        string ters = new string(ch);
        //m.SendTextMessage("Sevgili " + e.UserFrom.FriendlyName + " şu anda meşgulüm. Lütfen daha sonra konuşalım ;",e.UserFrom);
        m.SendTextMessage(ters,e.UserFrom);

    }

    void messenger_OutgoingTextMessage(object sender, OutgoingTextMessageEventArgs e)
    {
        //e.Cancel = true;
        string text = e.TextMessage;
        string yeni = "";
        foreach (string kelime in text.Split(new char[] { ' ' }))
        {
            yeni += kelime.Replace("r", "v").Replace("s", "ss") + " ";
        } 
        m.SendTextMessage(yeni, e.UserTo);
    }
}

Bu arada neden namespace'i yok bu projenin derseniz - ki namespace'siz olur mu? hani nerde global::Peltek demeyin sakın.Demek istediğim açık seçik ortada :) -  Msn'e eklemeye çalıştığımda AddIn'i Class ismi ile dosya isminin (Peltek.dll) aynı olmadığını - Sanırım Reflection kullanıo :p - söyleyip kızıyordu. Ben de Msn'in Reflection kullandığını düşünüp - ki başka ne düşündüğümü sormayın -  namespace i kaldırdığımda başarılı bir şekilde eklediğini gördüm :)
Size çalışırsa ne diyeyim ben beceriksizmişim ;)