İçerik

Bir çoğumuz mIRC DLL‘lerini kullanırız, birde bunların yazılım kısımı vardır, herkez mIRC kodlayabilir fakat herkez DLL yazamaz, yazabilenler ise mIRC’in yetersiz kaldığı yerlerde DLL ile istediği işlemleri yaptırabilir, bu dökümde basit bir şekilde Visual C++ ile nasıl dll yapabilirsiniz onu öğreniceksiniz;

Ö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

 

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.

 

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.

 

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.


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.

 

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;

 

CODE:

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

 

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;

CODE:

  1. #include <windows.h>
  2. int __stdcall ciprix(HWND mWnd,HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) {
  3. strcpy(data, “data”);
  4. return 3;
  5. }

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.

 

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;

CODE:

  1. LIBRARY “basit-bir-dll”
  2. EXPORTS
  3. 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.

 

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.

 

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)

 

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.

 

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;

 

yani şu şekilde;

CODE:

  1. #include <windows.h>
  2. #define MircWire(x) int __stdcall x(HWND mWnd,HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
  3. MircWire(ciprix) {
  4. strcpy(data, “Bu bir DLL örneğidir: 1”);
  5. return 3;
  6. }
  7. MircWire(ciprix2) {
  8. strcpy(data, “Bu bir DLL örneğidir: 2”);
  9. return 3;
  10. }

Ü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;

 

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ç;

 

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.