Selam un Aleykum
Bu yazi da arkadaslar temel de WINAPI leri C# ta nasil kullanildigini görücez.
Öncelikle API kullanimi System.Runtime.IntertopServices Namespace’ini kullaniriz.
Simdi bir WinApi kullanarak CD-ROM umuzu çikartip takalim otomatikman.
Bunun için bir Proje baslatalim.
Ve projemize Manager adinda bir class ekleyelim.
Simdi Dll imizi Import edicez bunun için.
using System.Runtime.InteropServices; NameSpace ini ekleyelim ve hemen class imizin altina su tilsimli kodlari yazalim :)

Evet Köseli Parantezle içinde DllImport dedigimiz zaman bizden programa import edicegimiz dll ismini string olarak istiyor.Biz CD islemlerini yapan Dll ismini olan winmm DLL ini veriyoruz..
[DllImport("winmm.dll")]
Simdi dll içindeki metotlari kullanabilmek için metoda adi ve parametreleri dogru biçimde yazmaliyiz/vermeliyiz..
public static extern int mciSendString(string Command, StringBuilder strReturn, int i, IntPtr hwndCallback);
public static void OpenCD()
{
IntPtr ptr = IntPtr.Zero;
mciSendString("Set cdaudio door open", null, 0, ptr);
Console.Beep(440, 1000);
}
public static void CloseCD()
{
IntPtr ptr = IntPtr.Zero;
mciSendString("Set cdaudio door closed", null, 1, ptr);
Console.Beep(500, 1000);
}
}
Simdi yukarda ne yaptik extern anahtar sözcügünü neden kullandik .
Simdi biz varolan bi Win Dll kullancagimiz için Dll içindeki metotlari yeniden yazmak yerine extern diye için açiyoruz ve dll içinde mciSendString diye bir metot var geriye Integer dönüyor herneyse kodlarimizi yazip. OpenCD ve CloseCD diye iki metot tanimladik ve gerekli parametrelerini verdik.Console.Beep ilede açilirken ve kapanirkenbelirledigimiz frekans ayarinda beep sesi çikartsin istiyoruz simdi .WINUI muza geçip 2 tane buton atalim 1 tanesi CD-RoM açsin digeri kapatsin.
Manager.OpenCD();
CD-ROM u açacak olan butona click event’ina yukardaki kodumuzu yaziyoruz Manager DLl import ettigimiz class in adi ve OpenCD CD-ROM u açacak olan metot.
Manager.CloseCD();
Ve CDROM u kapatacak olan metot…
Sonuç bi deneyin J
Baska makalelerde görüsmek üzere
Bu Makale Usame Yigit Tarafindan Medrese-i Yusufiye Adina Yazilmistir…