MSN kişi listesi almak ..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
MSN kişi listesi almak ..
Arkadaşlar delphi ile yaptığım program içinden MSN kişi listesini kayıt edebilirmiyim ?
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Denedim fakat nasıl kullanacağım konusunda pek bir bilgim yok. Konuyu biraz daha açarsanız sevinirim.Opt2000 yazdı:Selam,
Delphi'de Project Menüsünden, Import Type Library'i seç ve oradan da Messenger API Type Library kütüphanesini importla. Paketi install et ve daha sonra da COM arabirimini kullanarak kişi listesini al
Kolay gelsin,
Bahadır Alkaç
Selam,
COM arabiriminden kastım ComAdminCatalog değil. Type Library'i import edip o classları kullandığınız zaman zaten COM arabirimini kullanmış oluyorsunuz. Bunu özellikle belirtmemin bir sebebi var. Daha önce COM arabirimi ile program yazanlar bilirler. COM arabiriminde RefCount mantığı vardır. Bir arabirimi kullanırken Query ederek ondan bir instance alırsınız ama Release etmek için değişkeninizi nil'e eşitlemeniz yeterlidir. C++ bu Smart Pointer's olarak geçiyor. Bu arada MSN'i Delphi'den hiç kullanmadım, ama daha önceki tecrübelerime dayanarak söylüyorum bunu.
Bu arada MSN ile ilgili bir iki tavsiyede bulunayım. MSN'de birisine kodla mesaj göndermeniz mümkün değil, sadece daha önce geçen başlıkta olduğu gibi klavya simülasyonu ile mümkün. Bu da sağlıklı bir çözüm değil. Ayrıca MSN'i değil, aslında Windows Messenger'i kullanıyorsunuz ve bunu rahatça kullanabilmek için size tavsiyem, Visual C++ ile bir wrapper DLL yazmanız. Yoksa Delphi'de çok başınız ağrıyabilir.
Kolay gelsin,
Bahadır Alkaç
COM arabiriminden kastım ComAdminCatalog değil. Type Library'i import edip o classları kullandığınız zaman zaten COM arabirimini kullanmış oluyorsunuz. Bunu özellikle belirtmemin bir sebebi var. Daha önce COM arabirimi ile program yazanlar bilirler. COM arabiriminde RefCount mantığı vardır. Bir arabirimi kullanırken Query ederek ondan bir instance alırsınız ama Release etmek için değişkeninizi nil'e eşitlemeniz yeterlidir. C++ bu Smart Pointer's olarak geçiyor. Bu arada MSN'i Delphi'den hiç kullanmadım, ama daha önceki tecrübelerime dayanarak söylüyorum bunu.
Bu arada MSN ile ilgili bir iki tavsiyede bulunayım. MSN'de birisine kodla mesaj göndermeniz mümkün değil, sadece daha önce geçen başlıkta olduğu gibi klavya simülasyonu ile mümkün. Bu da sağlıklı bir çözüm değil. Ayrıca MSN'i değil, aslında Windows Messenger'i kullanıyorsunuz ve bunu rahatça kullanabilmek için size tavsiyem, Visual C++ ile bir wrapper DLL yazmanız. Yoksa Delphi'de çok başınız ağrıyabilir.
Kolay gelsin,
Bahadır Alkaç
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Msn Penceresine Yazı Yazdırma
Bu Kod İle Nick'ini Bildiğin Bir Kişiye Mesaj Yazdırabilirsin

Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
H,L: HWND;
i:boolean;
begin
H:=FindWindow(nil,PChar('Kişinin Nicki - Konuşma')); //Aslında ben pencere ismini alarak handle numarasını aldım fakat delphi ile birlikte gelen winsight32 programı ile classname olarak alabilirsiniz.
if h=0 then
begin
showmessage('Nick Bulunamadı!');
exit;
end;
L:=FindWindowEx(H,0,PChar('DirectUIHWND'),nil); // DirectUIHWND winsight323 programından yararlanarak buldum gerçekten de window pencereleri ile işlem yapacaksanız çok güzel bir araç
if L=0 then
begin
showmessage('P Nick Bulunamadı!');
exit;
end;
PostMessage(H, WM_SETFOCUS, 1, 0); //Arakadaşımın penceresine focuslandım
PostMessage(L,wm_char,72,0); //buradada istediğim msjı Ascii codlarını karakter karakter yazıp gönderdim
PostMessage(L,wm_char,85,0);
PostMessage(L,wm_char,83,0);
PostMessage(L,wm_char,79,0);
PostMessage(L,wm_char,78,0);
PostMessage(L,wm_char,69,0);
PostMessage(L,wm_char,84,0);
PostMessage(L,wm_char,46,0);
PostMessage(L,wm_char,67,0);
PostMessage(L,wm_char,79,0);
PostMessage(L,wm_char,77,0);
PostMessage(L,WM_KEYDOWN,vk_return,0);//buradada entera basıp send işlemini yerine getirmiş bulundum...
end;
Selam,
Eğer istediğin sadece Messenger kişi listesini almaksa aşağıdaki işlemleri uygula.
Project->Import Type Library menüsünü çalıştır. Listeden Messenger Type Library (Version 1.0) elemanını seç. Sonra da aşağıdaki Install düğmesine bas. Eğer kazara Replace falan gibi saçma sapan şeyler söylerse evet de
Tavsiyem bu bileşen için yeni bir paket tanımlaman. Ben adını Messenger koydum. Sonra bu paketi install et. Component Palette'den ActiveX sekmesine git ve oradan da forma bir adet MsgrObject bileşeni ekle. Bileşenin AutoConnect özelliğini True yap, adını da MSN koy. Ayrıca bir tane de buton ve ListBox koy. ListBox'ın adının lstUserList olarak değiştir. Sonra da Buton'un OnClick eventine aşağıdaki kodu yaz.
Böylece MSN'deki kişi listesini almış olursun. Burada kullanıcının MSN'den login olduğunu düşünüyoruz. Eğer kullanıcı login olmamışsa elbette sorun çıkaracaktır. Ama bileşeni iyice inceleyecek olursan bunun için de çözüm bulabilirsin.
Tekrar söylüyorum. MSN veya Messenger üzerinden legal bir yöntemle mesaj atmak mümkün değil, sadece şunu yapabilirsin, MSN'in protokolünü kullanarak kendi yazdığın bir mesaj programı ile MSN kullanıcılarına mesaj atabilirsin. En güzel örneği de sanırım Gaim. Üstelik açık kaynak kodlu bir proje.
Eğer ısrarla MSN'den mesaj atmak istiyorum diyorsan, o zaman Trial_Cooder'in verdiği koddaki gibi yöntemler kullanman gerekiyor. MS'in dokümanlarından okuduğum kadarıyla MS, güvenlik sebeplerinden dolayı mesaj atma ve gelen mesajı alma işlemlerine izin vermiyor.
Kolay gelsin,
Bahadır Alkaç
Eğer istediğin sadece Messenger kişi listesini almaksa aşağıdaki işlemleri uygula.
Project->Import Type Library menüsünü çalıştır. Listeden Messenger Type Library (Version 1.0) elemanını seç. Sonra da aşağıdaki Install düğmesine bas. Eğer kazara Replace falan gibi saçma sapan şeyler söylerse evet de

Tavsiyem bu bileşen için yeni bir paket tanımlaman. Ben adını Messenger koydum. Sonra bu paketi install et. Component Palette'den ActiveX sekmesine git ve oradan da forma bir adet MsgrObject bileşeni ekle. Bileşenin AutoConnect özelliğini True yap, adını da MSN koy. Ayrıca bir tane de buton ve ListBox koy. ListBox'ın adının lstUserList olarak değiştir. Sonra da Buton'un OnClick eventine aşağıdaki kodu yaz.
Kod: Tümünü seç
var
I:Integer;
Item:string;
begin
I:=MSN.List[0].Count;
for I:=0 to MSN.List[0].Count-1 do
begin
Item:=MSN.List[0].Item(I).FriendlyName + ' - ' + MSN.List[0].Item(I).EmailAddress;
lstUserList.Items.Add(Item);
end;
Tekrar söylüyorum. MSN veya Messenger üzerinden legal bir yöntemle mesaj atmak mümkün değil, sadece şunu yapabilirsin, MSN'in protokolünü kullanarak kendi yazdığın bir mesaj programı ile MSN kullanıcılarına mesaj atabilirsin. En güzel örneği de sanırım Gaim. Üstelik açık kaynak kodlu bir proje.
Eğer ısrarla MSN'den mesaj atmak istiyorum diyorsan, o zaman Trial_Cooder'in verdiği koddaki gibi yöntemler kullanman gerekiyor. MS'in dokümanlarından okuduğum kadarıyla MS, güvenlik sebeplerinden dolayı mesaj atma ve gelen mesajı alma işlemlerine izin vermiyor.
Kolay gelsin,
Bahadır Alkaç