Anasayfa RSS Email

February 2005 Entries

Coding for fun!(:

MSN Messenger 7 beta build 0604 sürümünün adresini bir önceki yazımda vermiş ve bir ekran görüntüsü paylaşmıştım. Bu sürüm Windows Media Player'da çalan şarkının adını isminizin sonuna şu şekilde ekliyor.



MSN7'nin bu sürümünü bana haber veren arkadaşım (Şaban Özgür), bu seferde bir winamp için bir plugin bulduğunu ve çalmakta olan şarkıyı MSN7'de nickname sonuna eklediğini söyledi. Kendisi biraz reverse engineering den anlar. ;) Biraz uğraş sonunda pluginlerin mesajları SendMessage ile MSN'e gönderdiğini anladık. (İlgili araçlar için Google'a exescope, w32dasm diye sorunuz.) Ardından kendisi plugini mesajları MSN'in MsnMsgrUIManager classname ine sahip penceresi yerine bizim yazdığımız uygulamalara gönderme işlemini halletti.:) Gelen mesajları yakalayıp, mesajın hangi format ile gönderildiğini kavradıktan sonra sıra geldi aynı format ile mesajları kendi uygulamamızdan göndermeye. Pinvoke severlere bu işlemler sırasında kulladığım yardımcı bir araç olan Api Viewer uygulamasını tavsiye ederim.

Daha sonra bu özelliği daha önce yazdığım WinampSongName.NET uygulamasına entegre ederek son halini vermiş oldum:)

Zip içindeki dosyalar:
MSN7Lib.vb: Esas oğlan budur. Olay burada bitiyor.
Form1.vb: Daha önce yazdığım uygulamada da olan bu form şarkı adı değiştikçe MSNde nickinizin sonuna şarkı ve şarkıcı adını ekliyor.
Form3.vb: MSN7Lib'in testi için kullanabilirsiniz. Textboxlara gireceğiniz değerleri şarkı adı olarak ayarlar.Şekilde Gözüktüğü gibi:

Class1.vb ve Form2.vb: Bunlar başlangıçta uygulamamıza gelen mesajları yakaladığımız ve çeşitli taklalar attığım dosyalardır. Programın çalışması için gerekli değillerdir. Kendisine gelen WM_COPYDATA mesajlarını yakalayıp Form2 de görüntülemektedir. İncelemek isterseniz.

Ne oldu şimdi? -Eğlendik:) Ve güzel bir Windows Api uygulaması elde etmiş olduk.

Şaban Özgür ile gecenin köründe yazdığımız bu güzide "Coding for Fun" uygulamasını buradan indirebilirsiniz.

Esas Oğlan'dan alıntı (MSN7Lib)

    Public Sub ChangeListeningText(ByVal songname As String, ByVal artist As String, ByVal album As String, ByVal handle As IntPtr)

        Dim data(684) As Byte

        data(0) = 1

        Array.Copy(getBytes(songname), 0, data, 4, getBytes(songname).Length)

        Array.Copy(getBytes(artist), 0, data, 204, getBytes(artist).Length)

        Array.Copy(getBytes(album), 0, data, 304, getBytes(album).Length)

        Array.Copy(getBytes("Cengiz HAN"), 0, data, 304, getBytes("Cengiz HAN").Length)

        Dim hwnd As IntPtr = FindWindow("MsnMsgrUIManager", Nothing)

        Dim x As IntPtr = Runtime.InteropServices.Marshal.AllocCoTaskMem(Runtime.InteropServices.Marshal.SizeOf(GetType(WinampSongName.NET.COPYDATASTRUCT)))

        Dim cs As New COPYDATASTRUCT

        cs.dwData = New IntPtr(1351)

        cs.cbData = 684

        cs.lpData = Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(data, 0)

        Runtime.InteropServices.Marshal.StructureToPtr(cs, x, True)

        SendMessage(hwnd.ToInt64, WM_COPYDATA, handle, x)

    End Sub

Pair Programming

Pair Programming hakkında ek$i sözlük'de yazılanları ilginç bulduğum için paylaşmak istedim(:

http://sozluk.sourtimes.org/show.asp?t=pair+programming

Pair Programming uygulayan ve görüşlerini paylaşmak isteyen ziyaretçiler, yorumlar linkinden görüşlerinizi yazarsanız sevinirim. Sizce Türkiye'de uygulanabiliritesi nedir? (:

OneNote kullanıyormusunuz?

OneNote kullanıyorsanız. Aşağıdaki PowerToy'lar hoşunuza gidebilir. Göz atmaya değer.

Send to OneNote from Internet Explorer
Send to OneNote from Outlook

http://office.microsoft.com/en-gb/assistance/HA011408961033.aspx

Bu PowerToy'lardan beni haberdar eden Fırat Iler'e tesekkürler.(:

Ayrıca .NET ile OneNote üzerinde programatik olarak çalışmak istiyorsanız aşağıdaki adresi incelemenizde fayda var.
http://blogs.msdn.com/dolange/archive/2004/06/17/158976.aspx

.NET 2.0 da System.Transactions

.NET 2.0 ile beraber distributed transaction için Serviced Component oluşturmak zorunda değiliz. System.Transactions namespace'i sayesinde DTC'yi artık daha rahat devreye alıp, distributed transaction oluşturabiliyoruz.

Bu ay konu ile ilgili yayınlanan MSDN TV videolarına aşağıdaki adresden ulaşabilirsiniz.

http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20050203NETMC/manifest.xml

download:
20050203NETMC.exe
20050203NETMCDemo.exe

ASP.NET 2.0'ı geliştiren takım nasıl mı çalışıyor?

ASP.NET Program Unit Manager (bundan ötesi yok:)) Scott Guthrie'den mutlaka okunması gereken iki blog yazısı:

Testing ASP.NET 2.0 and Visual Web Developer
http://weblogs.asp.net/scottgu/archive/2004/10/28/249458.aspx
Tracking Bugs
http://weblogs.asp.net/scottgu/archive/2004/11/03/251930.aspx

OPML

Uzun süredir weblog takibi yapamıyordum. Aylar önce yedeğini aldığım OPML dosyamı buldum. Feeddemon'a import ettim. İlgilenenler var ise takip ettiğim (güncel olmayanlar olabilir.) weblogların listesini aşağıdaki OPML içerisinde bulabilirler.

myList.zip

ASP.NET 2.0

ASP.NET 2.0 geliyor!
Bir çoğumuz sabırsızlıkla ürünün piyasaya çıkmasını bekliyoruz. Teknik içerikli bir çok yazı yayınlanmaya başladı. İlgi çekici teknik dokumanlar ve makaleleri buradan paylaşmaya devam edeceğim, fakat Microsoft Web Platform & Tools ekibinde Development Lead olarak çalışan Nikhil Kothari'nin sitesinde (http://www.nikhilk.net weblogunu kesinlikle tavsiye ederim.) bulduğum bir slaytda ilginç ve güzel:) bir istatistik gördüm. Paylaşmak istedim.

  ASP.NET v1.1 ASP.NET “Whidbey”
# of Types  321  1138
# of Namespaces  12  20
Assembly Size  ~1.2MB  > 5MB
Web Statistics