İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# MP3 Çalar Uygulaması – mciSendString

C# MP3 Çalar Uygulaması – mciSendString
+ - 2

C# MP3 Çalar Uygulaması – mciSendString , ile yeni bir uygulama ile karşınızdayım. Windows winmm.dll dosyasını kullanarak ses dosyalarını oynatmak için basit düzey bir uygulama hazırladım. Bir kaç yerde bu işlemin örneklerini görmüştüm bende böyle bir uygulamaya yapayım diyerek bu uygulamayı hazırladım. Elbette örneklerinden çok daha farklı bir halde sonuçlandı. Basit düzey bir media player halini aldı. C# MP3 Çalar uygulmasına ve kodlarına hep beraber bakalım.

C# MP3 Çalar Uygulaması – mciSendString

Uygulamamızın ekran görüntüsü ve numaralara göre açıklaması aşağıdaki gibidir.

C# MP3 Çalar Uygulaması - mciSendString

Uygulamanın içerdiği işlemler,

  1. Oynatma listesi hazırlayabilirsiniz.
  2. Listeyi temizleyip yeni liste oluşturabilirsiniz.
  3. Oynatma listenizde müzikleri görebilirsiniz.
  4. Ses, Bas ve Tiz ayarları yapabilirsiniz.
  5. Çalan müziği ileri geri sarabilirsiniz.
  6. Oynatma listesinden karışık oynatmayı ve Seçilen bir şarkıyı tekrar tekrar çalmasını sağlayabilirsiniz.
  7. Oynat, Rastgele Seç Oynat, Duraklat, Sonraki, Önceki ve Durdur butonları ile müzikler arasında geçiş yapabilirsiniz.

Şimdi Projemizin kodlarına geçelim. Sıra sıra işlemleri açıklayarak kodları vereceğim.

MP3Player.cs Dosyası,

using System.Runtime.InteropServices;

NameSpace’ini import ediyoruz.

        private string PlayerCommand;
        private bool muzikAcik = false;
        private bool muzikCaliyor = false;
        public bool muzikDuraklatildi = false;

        [DllImport("winmm.dll")]
        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, int OlmazsaOlmaz);

Değişkenlerimizi tanımlıyoruz ve windows dll’ini import ediyoruz. Asıl işi yapacak olan kısım bu dll dir.

İlk olarak seçilen müziği oynatmak için açıyoruz.

        /// <SUMMARY>
        /// Yeni bir müzik dosyası aç
        /// </SUMMARY>
        /// <param name="sFileName" />Müzik yolu</param />
        public void mp3_Ac(string sFileName)
        {
            PlayerCommand = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
            mciSendString(PlayerCommand, null, 0, 0);
            muzikAcik = true;
        }

Açılan müziği oynatıyoruz.

        /// <SUMMARY>
        /// Seçilen müziği oynat.
        /// </SUMMARY>
        /// <param name="loop" />True gelirse kendini tekrarlar.</param />
        public void mp3_Oynat(bool loop)
        {
            if (muzikAcik)
            {
                PlayerCommand = "play MediaFile";
                if (loop)
                    PlayerCommand += " REPEAT";
                mciSendString(PlayerCommand, null, 0, 0);
                muzikCaliyor = true;

            }
        }

Burada muzikAcik değişkenimizin değeri True ise müzik oynatma işlemi yapılacak. Müzik oynatılmaya başlandığında muzikCaliyor değişkenin değeri True olarak ayarlanıyor. Bu değişken sayesinde şuanda bir müzik oynatılıyor mu? sorusuna cevap buluyoruz.

Müziği duraklatmak istediğimizde (Pause)

        /// <SUMMARY>
        /// Müziği duraklat.
        /// </SUMMARY>
        public void mp3_Duraklat()
        {
            PlayerCommand = "pause MediaFile";
            mciSendString(PlayerCommand, null, 0, 0);
            muzikDuraklatildi = true;
        }

muzikDuraklatildi değişkeimizin değerini True yapıyoruz ki müzik duraklatıldı mı? sorusuna cevap buluyoruz.

Müziği tamamen durdurmak için, (Stop)

        /// <SUMMARY>
        /// Çalan müziği durdur. Kaldığı yerden devam etmez.
        /// </SUMMARY>
        public void mp3_Kapat()
        {
            PlayerCommand = "close MediaFile";
            mciSendString(PlayerCommand, null, 0, 0);
            muzikAcik = false;
        }

Müziğin şuan ki durumunu almak için,

        /// <SUMMARY>
        /// Müziğin son durumunu alır. Çalıyor, Duraklatıldı vs.
        /// </SUMMARY>
        public string mp3_Durum()
        {
            int i = 128;
            StringBuilder str = new StringBuilder(i);
            mciSendString("status MediaFile mode", str, i, 0);
            switch (str.ToString())
            {
                case "playing":
                    return "Çalıyor";
                case "paused":
                    return "Duraklatıldı";
                default:
                    return "Kapatıldı";
            }
        }

Sol ses’ i açıp kapatmak, (Sol kulaklık, Sol Hoparlör vs.)

        /// <SUMMARY>
        /// Müziğin Sol Sesini Ayarla
        /// </SUMMARY>
        public int SolSes
        {
            get
            {
                return 0;
            }
            set
            {
                mciSendString(string.Concat("setaudio MediaFile left volume to ", value), null, 0, 0);
            }
        }

Sağ ses’ i açıp kapatmak, (Sağ kulaklık, Sağ Hoparlör vs.)

        /// <SUMMARY>
        /// Müziğin Sağ Sesini Ayarla
        /// </SUMMARY>
        public int SagSes
        {
            get
            {
                return 0;
            }
            set
            {
                mciSendString(string.Concat("setaudio MediaFile right volume to ", value), null, 0, 0);
            }
        }

Ana ses’ i açıp kapatmak,

        /// <SUMMARY>
        /// Müziğin Ana Sesini Ayarla
        /// </SUMMARY>
        public int AnaSes
        {
            get
            {
                return 0;
            }
            set
            {
                mciSendString(string.Concat("setaudio MediaFile volume to ", value), null, 0, 0);
            }
        }

NOT: Ses ayarlama kısmında, müzik ilk açıldığında yüksek sesli çalıyor ancak ses ile oynadığınızda sağ alttaki ses kısmından ayarladığınız sesi geçemiyor. Bu bir sorun ama çok fazla takılmadım bu soruna…

Bas ve Tiz ayarlama için,

        /// <SUMMARY>
        /// Müziğin Bas Sesini Ayarla
        /// </SUMMARY>
        public int Bass
        {
            get
            {
                return 0;
            }
            set
            {
                mciSendString(string.Concat("setaudio MediaFile bass to ", value), null, 0, 0);
            }
        }

        /// <SUMMARY>
        /// Müziğin Tiz Sesini Ayarla
        /// </SUMMARY>
        public int Tiz
        {
            get
            {
                return 0;
            }
            set
            {
                mciSendString(string.Concat("setaudio MediaFile treble to ", value), null, 0, 0);
            }
        }

Oynatılan müziğin kaçıncı saniyesinde olduğunu mm:ss formatında yani dakika ve saniye olarak almak için,

        public TimeSpan _ts_Pozisyon;
        private double _ms_Pozisyon = 0;
        public int _sn_Pozisyon = 0;
        public string _st_Pozisyon = "";
        /// <summary>
        /// Şuanda oynatılan müziğin kacıncı saniyesinde olduğunu bulur.
        /// </summary>
        public void Pozisyon()
        {
            if (muzikAcik && muzikCaliyor)
            {
                StringBuilder str = new StringBuilder(128);
                PlayerCommand = "status MediaFile position";
                mciSendString(PlayerCommand, str, 128, 0);
                try
                {
                    _ms_Pozisyon = Convert.ToDouble(str.ToString());
                }
                catch (FormatException) { }
                try
                {
                    _sn_Pozisyon = Convert.ToInt32(TimeSpan.FromMilliseconds(_ms_Pozisyon).TotalSeconds);

                    _ts_Pozisyon = TimeSpan.FromMilliseconds(_ms_Pozisyon);
                    _st_Pozisyon = string.Format("{0:D2}:{1:D2}:{2:D2}",
                       _ts_Pozisyon.Hours,
                       _ts_Pozisyon.Minutes,
                       _ts_Pozisyon.Seconds);
                }
                catch (InvalidCastException) { }
            }
        }

Normal şartlarda sonuç milisaniye olarak geliyor. TimeSpan ile dakika ve saniye formatına çeviririyoruz.

Oynatılan müziğin toplam süresini mm:ss formatında almak. Dakika ve saniye formatında…

private TimeSpan _ts_ToplamSure;
        private double _ms_ToplamSure = 0;
        public int _sn_ToplamSure = 0;
        public string _st_ToplamSure = "";
        /// <summary>
        /// Şuanda oynatılan müziğin süresini bulur
        /// </summary>
        public void ToplamSure()
        {
            if (muzikAcik && muzikCaliyor)
            {
                StringBuilder str = new StringBuilder(128);
                PlayerCommand = " status MediaFile length";
                mciSendString(PlayerCommand, str, 128, 0);
                try
                {
                    _ms_ToplamSure = Convert.ToDouble(str.ToString());
                }
                catch (FormatException) { }
                try
                {
                    _sn_ToplamSure = Convert.ToInt32(TimeSpan.FromMilliseconds(_ms_ToplamSure).TotalSeconds);

                    _ts_ToplamSure = TimeSpan.FromMilliseconds(_ms_ToplamSure);
                    _st_ToplamSure = string.Format("{0:D2}:{1:D2}:{2:D2}",
                       _ts_ToplamSure.Hours,
                       _ts_ToplamSure.Minutes,
                       _ts_ToplamSure.Seconds);
                }
                catch (InvalidCastException) { }
            }
        }

NOT: İlerlemeyi göstermek için süreleri dakika : saniye olarak alıyoruz ancak ileri geri sarma işlemi için milisaniye değerleri gerekiyor. Dakika saniye bilgisi göstermek için lazım.

Oynatılan müziği ileri geri sarma işlemi için,

        /// <summary>
        /// Müziği ileri yada geri sar
        /// </summary>
        public void IleriGeriSar(double ms)
        {
            mciSendString("seek MediaFile to " + ms, null, 0, 0);
        }

 

Form1.cs Dosyası

Class dosyamızın içeriği ve açıklaması bu kadar arkadaşlar. Şimdi formumuzun kodlarına bakalım. Açıklamaları yukarıda yer alan görseldeki sıralamasına göre yapacağım.

İlk olarak değişkenleri ve tanımlamaları verelim.

        MP3Player pl = new MP3Player();
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        bool muziklerYuklendi = false, muzik_Caliyor = false, Karistir = false, Tekrarla = false;
        List<string> OynatmaListesi = new List<string>();
         int MuzikDegisti = 0;

Buradaki OynatmaListesi adındaki List<T> listesinde müziklerin tam yolunu tutacağız. Listbox nesnesinde ise sadece müziklerin adlarını göstereceğiz. Bu şekilde hoş olmayan bir görüntüyü engellemiş olacağız.

* – Form Load Eventi

        private void Form1_Load(object sender, EventArgs e)
        {
            tck_muzik_durum.MouseWheel += new MouseEventHandler(this.Tck_muzik_durum_MouseWheel);
        }

MouseWheel eventi hiçbir nesnenin özellikler sayfasında yer almamaktadır. Bu sebeple ileri geri sarma için kullanacağımız C# TrackBar  mousewheel eventi tanımlıyoruz.

1 – Oynatma Listesi Oluşturma Buton

        private void btn_Muzik_sec_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Media File(*.mpg,*.dat,*.avi,*.wmv,*.wav,*.mp3)|*.wav;*.mp3;*.mpg;*.dat;*.avi;*.wmv";
            openFileDialog1.Multiselect = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                for (int i = 0; i < openFileDialog1.FileNames.Count(); i++)
                {
                    list_Muzik_Liste.Items.Add(openFileDialog1.SafeFileNames[i]);
                    OynatmaListesi.Add(openFileDialog1.FileNames[i]);
                }
                btn_muzik_oynat.Enabled = true;
                btn_muzik_durdur.Enabled = true;
                btn_duraklat.Enabled = true;
                muziklerYuklendi = true;
                btn_sonraki.Enabled = true;
                btn_onceki.Enabled = true;
                btn_rastgele.Enabled = true;
            }
       
        }

OpenFileDialog nesnesi sayesinde bir klasörden müzikleri seçiyoruz ve seçilen müzikler için ListBox ‘a sadece müzik adlarını, List<T> ‘ye ise müziğin tam yolunu dolduruyoruz. Müzik listesine müzik eklenmeden butonlara basılmasın diye de diğer butonları aktif ediyoruz. Normalde butonlar pasif durumda…

2 – Listeyi Temizle Butonu

        private void btn_liste_temizle_Click(object sender, EventArgs e)
        {
            list_Muzik_Liste.Items.Clear();
            OynatmaListesi.Clear();
            pl.mp3_Kapat();
            if (MessageBox.Show("Mecvut liste temzilendi. Yeni liste oluşturmak ister misiniz?", 
            "Yeni Liste", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                btn_Muzik_sec.PerformClick();
            }
        }

Listeleri temizledikten sonra müzik çalmaya devam edeceğinden müziği de durduruyoruz.

3 – Oynatma Listesi ListBox

Liste üzerinde çift tık yapıldıktan sonra tıklanan müziği oynatmak için,

 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (list_Muzik_Liste.SelectedIndex >= 0)
                if (muziklerYuklendi)
                    if (pl.muzikDuraklatildi == true)
                    {
                        pl.mp3_Oynat(Tekrarla);
                        pl.muzikDuraklatildi = false;
                    }
                    else
                        btn_muzik_oynat.PerformClick();
        }

ListBox’a bir contextmenustrip ekledikten sonra, listedeki müzikleri tek tek silebilmek için aşağıdaki eventleri kullanıyoruz. MouseDown eventi üzerinde sağ tıklanan müziği algılaması için gerekiyor. Contextmenustrip nesnesine eklediğimiz sil menüsü içinde alttaki eventi kullanıyoruz.

// listbox üzerinde sağ tık yapıldığında mouse ın üzerinde olduğu
// müzik seçilsin diye bunu yapıyoruz.
private void list_Musik_Liste_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
        list_Muzik_Liste.SelectedIndex = list_Muzik_Liste.IndexFromPoint(e.X, e.Y);
    else { }
}
 private void silToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int i = list_Muzik_Liste.SelectedIndex;
            list_Muzik_Liste.Items.RemoveAt(i);
            OynatmaListesi.RemoveAt(i);
            list_Muzik_Liste.Refresh();
            if (muzik_Caliyor == true)
            {
                pl.mp3_Kapat();
                MessageBox.Show("Liste Değişti. Müziği yeniden başlatın.");

                muzikDegistirTemizle();
                muzik_Caliyor = false;
            }
        }

ListBox’ta seçili olan müzik değiştirildiğinde yeni seçilen müziğin oynatılması için,

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            muzikDegistirTemizle();
            try
            {
                grp_muzik.Text = "Çalan Müzik : ... " + list_Muzik_Liste.SelectedItem.ToString();
                btn_muzik_oynat.PerformClick();
            }
            catch (NullReferenceException)
            {
            }
        }
        // müzik değişiminde önceki müzik bilgilerini sıfırlıyoruz.
        void muzikDegistirTemizle()
        {
            grp_muzik.Text = "Çalan Müzik : ... ";
            lbl_pozisyon_sn.Text = "00:00:00";
            lbl_toplam_sn.Text = "00:00:00";
            tck_muzik_durum.Value = 0;
        }

NOT: Burada btn_muzik_oynat butonunun altındaki kodları tekrar yazmamak için PerformClick fonksiyonunu kullanıyoruz. Bu fonksiyon, kod ile butona tıklama işlemini yapıyor.

 

4 – Ses, Bas, ve Tiz Ayarlama TrackBar

TrackBar nesnesinin Scrool eventini kullanarak aktif değerleri MP3Player class’ımıza gönderiyoruz.

        private void tck_ana_ses_Scroll(object sender, EventArgs e)
        {
            pl.AnaSes = tck_ana_ses.Value;
        }
        private void tck_sol_ses_Scroll(object sender, EventArgs e)
        {
            pl.SolSes = tck_sol_ses.Value;
        }
        private void tck_sag_ses_Scroll(object sender, EventArgs e)
        {
            pl.SagSes = tck_sag_ses.Value;
        }
        private void tck_bas_Scroll(object sender, EventArgs e)
        {
            pl.Bass = tck_bas.Value;
        }
        private void tck_tiz_Scroll(object sender, EventArgs e)
        {
            pl.Tiz = tck_tiz.Value;
        }

 

5 – İleri Geri Sarma TrackBar

Burada tck_muzik_durum adlı TrackBar nesnesinden aldığımız saniye bilgisini milisaniye ye çevirerek MP3Player.cs class’ımıza gönderiyoruz.

        private void tck_muzik_durum_Scroll(object sender, EventArgs e)
        {
            IleriGeriSar();
        }
        void IleriGeriSar()
        {
            pl.mp3_Duraklat();
            double d = TimeSpan.FromSeconds(tck_muzik_durum.Value).TotalMilliseconds;
            pl.IleriGeriSar(d);
            pl.mp3_Oynat(Tekrarla);
        }

 

6 – Karıştır ve Tekrarla CheckBox

Burada sadece karıştırma işlemi için bir metodumuz var. Tekrarla işlemi sadece bir değişken üzerinden yapılıyor.

        void Karisik_Oynat()
        {
            Random rnd = new Random();
            int i = rnd.Next(0, OynatmaListesi.Count() - 1);
            list_Muzik_Liste.SelectedIndex = i;
            btn_muzik_oynat.PerformClick();
        }

 

7 – Oynat, Rastgele Seç Oynat, Duraklat, Sonraki, Önceki ve Durdur Buton

Oynat Butonu

        private void btn_muzik_oynat_Click(object sender, EventArgs e)
        {
            muzikDegistirTemizle();

            if (pl.muzikDuraklatildi == true)
            {
                pl.mp3_Oynat(Tekrarla);
                pl.muzikDuraklatildi = false;
            }
            else
            {
                if (muzik_Caliyor)
                {
                    pl.mp3_Kapat();
                    muzik_Caliyor = false;
                }
                if (list_Muzik_Liste.SelectedIndex < 0)
                    list_Muzik_Liste.SelectedIndex = 0;



                pl.mp3_Ac(OynatmaListesi[list_Muzik_Liste.SelectedIndex].ToString());
                pl.mp3_Oynat(Tekrarla);
                muzik_Caliyor = true;

                grp_muzik.Text = "Çalan Müzik : " + list_Muzik_Liste.SelectedItem.ToString();
                pl.ToplamSure();
                lbl_toplam_sn.Text = pl._st_ToplamSure.ToString();
                tck_muzik_durum.Maximum = pl._sn_ToplamSure;

                this.Text = "Çalan Müzik : ... " + list_Muzik_Liste.SelectedItem.ToString();
            }
            MuzikDegisti = 0;
        }

Oynat butonuna tıklandığında önceki müziği kapatıp yeni müziği açması gerekiyor. Ancak müzik duraklatıldı ise kaldığı yerden devam etmesi gerekiyor.

Müzik o anda çalıyor ise o müziğin kapatılması gerekiyor. Müzik kapatıldıktan sonra ListBox’un SelectedIndex’i değişecek. Bu sayede ListBox’un SelectedIndexChange eventi tetiklenecek ve diğer müzik çalmaya başlayacak.

Oynatılan müziğin toplam süresini de alıyoruz. Ayrıca burada çalınan müziğin o anda hangi saniyede olduğunu almak için de bir timer nesnesi kullanıyoruz.

 private void timer1_Tick(object sender, EventArgs e)
        {
            if (chk_tekrarla.CheckState == CheckState.Checked)
                Tekrarla = true;
            else
                Tekrarla = false;

            if (chk_karistir.CheckState == CheckState.Checked)
                Karistir = true;
            else
                Karistir = false;




            if (muzik_Caliyor)
            {
                if (list_Muzik_Liste.Items.Count > 0)
                {
                    if (muziklerYuklendi & muzik_Caliyor)
                    {
                        pl.Pozisyon();
                        lbl_pozisyon_sn.Text = pl._st_Pozisyon.ToString();
                        tck_muzik_durum.Value = pl._sn_Pozisyon;
                        OtoMuzikDegistir();
                    }
                }
            }

        }

Timer’i özellikler sayfasından Enabled özelliğini True olarak ayarlıyoruz. Ben Interval özelliğini de 500 ms olarak ayarladım. Karıştırma ve Tekrarla isteklerini sürekli olarak time ile kontrol ediyoruz. Bu sayede işaretlendikleri anda aktif olacaklar.

Burada Ek olarak OtoMuzikDegistir() metodumuz vardır. Bu metod, bir müzik bittiğinde diğer müziğe geçmesini sağlayacak.

            if (pl._sn_Pozisyon == pl._sn_ToplamSure & MuzikDegisti == 0 & Tekrarla == false)
            {
                try
                {
                    if (Karistir)
                    {
                        Karisik_Oynat();
                    }
                    else
                    {
                        list_Muzik_Liste.SelectedIndex += 1;
                    }
                    MuzikDegisti = 1;
                    btn_muzik_oynat.PerformClick();
                }
                catch (ArgumentOutOfRangeException) { }
            }
        }

Müziğin değişme şartı ise, Poziyon ile toplam sürenin aynı olması yani müziğin sonuna gelinmiş olması. Ek olarak Tekrarlama aktif olmaması gerekiyor. Eğer tekrarlama aktif ise müzik değişmeyecek.

Rastgele Oynat Butonu

Burada Random bir sayı üretiyoruz. Bu random sayı 0 ile listbox’taki item sayısının bir eksiği arasında olacak. Örn ListBox’ta 100 tane müzik var ise 0 ile 99 arasında olacak. Çünkü biliyorsunuz ki count ile index farklı kavramlar. Count’ta 0 hiç yok demektir. İndex’te 0 ilk item demektir.

        private void btn_rastgele_Click(object sender, EventArgs e)
        {
            Karisik_Oynat();
        }
        void Karisik_Oynat()
        {
            Random rnd = new Random();
            int i = rnd.Next(0, OynatmaListesi.Count() - 1);
            list_Muzik_Liste.SelectedIndex = i;
            btn_muzik_oynat.PerformClick();
        }

 

Duraklat Butonu

        private void btn_duraklat_Click(object sender, EventArgs e)
        {
            pl.mp3_Duraklat();
            pl.muzikDuraklatildi = true;
        }

 

Önceki Müzik Butonu

Burada eğer Karıştır aktif ise rastgele bir müzik seçecek. Değil ise bir öncekini seçecek. Eğer liste başına geldiyse de uyarı verecek.

        private void btn_onceki_Click(object sender, EventArgs e)
        {
            muzikDegistirTemizle();
            pl.mp3_Kapat();

            if (Karistir)
            {
                Karisik_Oynat();
            }
            else
            {
                try
                {
                    list_Muzik_Liste.SelectedIndex -= 1;
                    pl.mp3_Ac(OynatmaListesi[list_Muzik_Liste.SelectedIndex].ToString());
                    grp_muzik.Text = "Çalan Müzik : ... " + list_Muzik_Liste.SelectedItem.ToString();
                }
                catch (NullReferenceException)
                {
                    MessageBox.Show("Müzik Listesinin Başı");
                }
            }

            pl.mp3_Oynat(Tekrarla);
            pl.ToplamSure();
            lbl_toplam_sn.Text = pl._st_ToplamSure.ToString();
            tck_muzik_durum.Maximum = pl._sn_ToplamSure;
        }

 

Sonraki Müzik Butonu

Önceki butonu ile aynı şekilde…

        private void btn_sonraki_Click(object sender, EventArgs e)
        {
            muzikDegistirTemizle();
            pl.mp3_Kapat();
            if (Karistir)
            {
                Karisik_Oynat();
            }
            else
            {
                try
                {
                    list_Muzik_Liste.SelectedIndex += 1;
                    pl.mp3_Ac(OynatmaListesi[list_Muzik_Liste.SelectedIndex].ToString());
                    grp_muzik.Text = "Çalan Müzik : ... " + list_Muzik_Liste.SelectedItem.ToString();
                }
                catch (ArgumentOutOfRangeException)
                {
                    MessageBox.Show("Müzik Listesinin Sonu");
                }
            }
            pl.mp3_Oynat(Tekrarla);
            pl.ToplamSure();
            lbl_toplam_sn.Text = pl._st_ToplamSure.ToString();
            tck_muzik_durum.Maximum = pl._sn_ToplamSure;
        }

 

Durdur Butonu

        private void btn_muzik_durdur_Click(object sender, EventArgs e)
        {
            pl.mp3_Kapat();
            list_Muzik_Liste.SelectedIndex = 0;
            muzikDegistirTemizle();
        }

 

C# MP3 Çalar projemizin tamamı bu kadar arkadaşlar. C# MP3 Çalar projesinin github linkine tıklayarak proje dosyalarına ulaşabilirsiniz. Projede gördüğünüz gibi herhangi bir şekilde kopya değildir. Tamamen bana ait olan ve benim yazdığım projedir.


C# MP3 Çalar Uygulaması – mciSendString, yazımda buraya kadar arkadaşlar. Diğer yazılarımda ve projelerimde görüşmek üzere.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Bu dersimizde bu kadar dostlar. Sağlıcakla ve takipte kalın. ;)

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (2)

  1. Müziği nasıl calıştırıcağız

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.