IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Programları (https://www.ircforumlari.net/mirc-scripting-programlari/)
-   -   mIRC'de DLL Yapımı (VC++) (https://www.ircforumlari.net/mirc-scripting-programlari/317868-mircde-dll-yapimi-vc.html)

CipriX 22 Şubat 2010 06:06

mIRC'de DLL Yapımı (VC++)
 
Öncelikle belirtmek isterimki Delphi, C#, C++ gibi bir çok programlama dili ile mIRC DLL yazılabilir, size Visual C++ Express Edition ile nasıl yazılacağını göstereceğim, bu programı Microsoft'un kendi sitesinden ücretsiz olarak indirebilirsiniz. mIRC üzerinden DLL yazımını yapabilmeniz için birazcıkda olsa VC++ yada benzer bir programlama dili ve mIRC kodlama hakkında bilgi sahibi olmalısınız!

Not: Bütün resimlerin büyük halleri için üzerine tıklayınız

Adım 1:

VC++'ımızı açıyoruz ve aşşağıdaki adımları izliyoruz;
  1. File
  2. New
  3. Project
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 2:


Çıkan penceredeki sol kısımdan Win32 ve sağ kısımdan da Win32 Project seçimini yapıp dosya ismimizi giriyoruz ben dosya ismi için demedll seçtim arzu ederseniz farklı bir isimde seçebilirsiniz "OK" butonuna basıyoruz.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Karşımıza gelen diğer pencerede aşşağıdaki resimde gördüğünüz gibi Application Type seçimini DLL olarak belirleyip Additional Options seçiminide Empty Project olarak seçip "Finish" butonuna basıyoruz.


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 3:


Bundan sonra ayarlar ve yazımlar işlemine geçiceğiz önünüze gelen ekranın sol tarafında dosya dizinlerinizi göreceksiniz basit bir DLL yazdığımız için biz sadece Source Files'i kullanacağız. İşlemler;
  1. Source Files sekmesine sağ tıklayın
  2. Add sekmesine tıklayın
  3. New Item sekmesine tıklayın
  4. Karşınıza gelen Add New Item penceresinden C++ File (.cpp) dosyasını seçin.
  5. Name kısmına bir dosya ismi belirtin ben "basit-bir-dll" olarak belirttim.
  6. Tamam butonuna bastıktan sonra tekrar üstteki işlemleri yapıp bu sefer C++ File (.cpp) seçmek yerine Text File (.txt) seçin, ve bir isim belirterek (ben dlldosyasi diye belirttim) "Add" butonuna basın.
Üstte kırmızı ile belirttiğim kısımlarda hata yapmayın, en önemli kısımlardır.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 4:


Aşşağıdaki resimde gördüğünüz gibi sağ taraftaki Source Files sekmesinin altında basit-bir-dll.cpp ve dlldosyasi.def diye iki klasör oluşmuş olmalı bunlardan basit-bir-dll.cpp (siz ne isim verdiyseniz) dosyasına çift tıklayarak ekranda gördüğünüz #include <windows.h> kütüphane tanımlamasını yapınız. Not: windows.h windowsun işletim sisteminin kütüphanesidir.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 5:


mIRC'in help dosyasında DLL ile ilgili geniş bir anlatım yapılmış, eğer bir program üzerinden DLL çalıştıracaksanız o programın Windowsdaki girdisini bilmeniz gerekmektedir, bu girdiği sağolsun Khaled amcamız bize zaten vermiş, mIRC'in Windows'daki girdisi;

Kod:

int __stdcall procname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 6:


5. adımdaki girdiyi programımızdaki .cpp dosyamıza aşşağıdaki resimde gördüğünüz gibi ekliyoruz ve ek olarak size verdiğim satırları yazıyoruz;

Kod:

#include <windows.h>

int __stdcall ciprix(HWND mWnd,HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) {

strcpy(data, "data");
return 3;
}

Bu koddaki olay ciprix değeridir, mIRC bize procname olarak vermişti ben onu ciprix yaptım ileride zaten tekrardan ciprix değerini değiştireceğim bu değer DLL'nin tanımlı sınıfı olacaktır.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 7:


.cpp dosyamız bir kenarıda dursun .def (txt olarak oluşturduğunuz) dosyamızı ele alalım bildiğiniz gibi ben .def dosyamı dlldosyasi isminde kayıt etmiştim üstteki sekmeden dlldosyasi.def seçeneğine tıklayarak içerisine şu bilgileri girelim;

Kod:


LIBRARY "basit-bir-dll"
EXPORTS

ciprix @ 1



Üstte gördüğünüz koddaki en önemli kısım "basit-bir-dll" kısmıdır, bu kısım sizin .cpp 'niz ne ise o olmalıdır, alttaki ciprix @ 1 kısmı ise mIRC'deki komut olacaktır, oraya farklı birşey yazarsanız ileride göstereceğim kısımda da değişiklik yapmalısınız.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 8:

Projemizin ismini ben demedll olarak tanımlamıştım hatırlarsınız, sol en üstteki seçenekten hemen "Header Files" 'in üstünde projemizin ismi yazmakta ona sağ tıklayıp aşşağıdaki resimdeki gibi "Properties" seçeneğine tıklıyoruz.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Açılan ekranda C/C++ sekmesinden Precompiled Header seçeneğine giriyoruz karşımızda 3 tane seçenek olmalı onların en üstündeki Create/Use Precompiled Header "Not using Precompiled Headers" şeklinde olmalıdır. (Aşşağıdaki resimdeki gibi)

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Bu özelliği tanımladıktan sonra "Tamam" butonuna basıp tekrardan hemen "Header Files" 'in üstünde projemizin ismi yazmakta ona sağ tıklayıp aşşağıdaki resimdeki gibi "Properties" seçeneğine tıklıyoruz.

Bu sefer Linker seçeneğinden Input sekmesine tıklayarak Module Definition File kısmının karşısına elimiz ile aşşağıdaki resimde göreceğiniz gibi .def dosyamızın ismini veriyoruz, benim yaptığım .def dosyasının ismi dlldosyasi.def idi.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Bu işlemi yaptıktan sonra tekrardan "Tamam" butonuna basıyoruz.

Adım 9:


Artık C++ özellikleriyle ilgili işimiz bitti, şimdi kodlamamızı geliştirip mIRC tabanlı yapma vakti geldi öncelikle aşşağıdaki resimde de göreceğiniz gibi gri alanları değiştirip resimdeki gibi yapıyoruz;

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

yani şu şekilde;

Kod:


#include <windows.h>

#define MircWire(x) int __stdcall x(HWND mWnd,HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)

MircWire(ciprix) {
strcpy(data, "Bu bir DLL örneğidir: 1");
return 3;
}
MircWire(ciprix2) {
strcpy(data, "Bu bir DLL örneğidir: 2");
return 3;
}

Üstte vermiş olduğum kod TAMAMEN benim yazdığım sisteme/isimlere/değişgenlere göre işlemektedir, önceki koda göre yaptığım değişiklikler;
  1. #define ekleyerek fonksiyon gibi tanımladık
  2. ciprix olarak belirttiğim değeri x yaptım
  3. #define olarak tanımladığım kısaltmayı kullanarak aşşağıda 2 tane ayrı komut oluşturdum, böylece mIRC'de bu dll üzerinden iki tane komuta sahip oldum
  4. strcpy olarak kayıt ettiği (yazma) datayı bana return 3 olarak geri vericek buda mIRC'de komutu girdiğimde yapıcağı işlemin sonucunu bana vermiş olacak.
Adım 10:

Komut girdilerini .def dosyamıza tanımlayarak mIRC üzerinden DLL'ye ait komutlar elde ediyoruz, eğer bu dosyaya mIRC'de kullanıcağımız komutları tanımlamaz isek ** DLL usul yok hatası alırız. Aşşağıdaki resimde göreceğiniz şekilde komutları tanımlarsanız hem ciprix hemde ciprix2 olarak iki tane ayrı komut yaratmış olursunuz;

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Tam boyut:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Adım 11 - FİNAL!:


Üstteki bütün adımları eksiksiz bir şekilde düzgün olarak yaptıktan sonra VC++ programının üstünde bulunan "Build" sekmesine tıkladıktan sonra "Rebuild Solution" sekmesine tıklayarak DLL dosyanızı oluşturabilirsiniz, bu DLL dosyanıza Belgelerim > Visual Studio 2008 > Projects > proje isminiz (benimki demedll idi) > Debug > dosyaisminiz.dll olarak ulaşabilirsiniz. Bu DLL dosyanızı mIRC'inizin ana dizinine atarak test edebilirsiniz. Benim üstte yaptığım DLL'nin komutları;
  • //echo -a $dll(demedll.dll,ciprix,.)
ve
  • //echo -a $dll(demedll.dll,ciprix2,.)
olmuş oldu, bu DLL'yi basit bir echo parametresi ile mIRC üzerinden denediğimizde ise çıkan sonuç;

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Tam boyut: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Bu şekilde basit bir DLL'yi VC++ kullanarak yazmış olduk, bu metodu ve kendinizi geliştirerek çok güncel ve farklı DLL'ler oluşturabilirsiniz.


Dökümü Yazan: CipriX!

Kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 13:33.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net