Budzik mp3 - Windows Forms

0

Witam. Chciałbym przerobić ten program http://www65.zippyshare.com/v/77539825/file.html na budzik mp3. Ten program odtwarza plik wav. Ale co zrobić żeby odtwarzał mp3? Myślałem że wystarczy tylko wrzucić do katalogu z programem plik mp3 a plik wav wywalić i w kodzie zmienić nazwę pliku na .mp3 - ale jednak nie. Program ruszył, nastawiłem budzik ale gdy już miał pojawić się alarm to wtedy wywaliło mi błąd. Wiecie jak to ogarnąć?

Kod (to ten stary kod jeszcze z plikiem wav):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Media;
using System.Windows.Forms;

namespace Budzik
{
    public partial class frmBudzik : Form
    {
        private DateTime alarm = new DateTime();
        private DateTime teraz;
        private bool gra = false;
        private bool ustawiony = false;
        private SoundPlayer dzwonek = new System.Media.SoundPlayer("Whistle.wav");
        private DateTime koniecalarmu;
        private TimeSpan czastrwania = new TimeSpan(0, 1, 0);

        public frmBudzik()
        {
            InitializeComponent();
            licznik.Start();
        }

        private void licznik_Tick(object sender, EventArgs e)
        {
            teraz = DateTime.Now;
            lblCzas.Text = teraz.ToString("T");
            if (ustawiony &&
                teraz.Hour == alarm.Hour &&
                teraz.Minute == alarm.Minute &&
                teraz.Second == alarm.Second && !gra)
            {
                gra = true;
                mnuUstaw.Text = "Stop";
                cmdUstaw.Text = "Stop";
                koniecalarmu = DateTime.Now.Add(czastrwania);
                dzwonek.PlayLooping();
            }
            if (gra)
            {
                if (koniecalarmu.Hour == teraz.Hour &&
                    koniecalarmu.Minute == teraz.Minute &&
                    koniecalarmu.Second == teraz.Second)
                {
                    mnuUstaw.Text = "Ustaw";
                    cmdUstaw.Text = "Ustaw";
                    gra = false;
                    dzwonek.Stop();
                }
            }
        }

        private void cmdUstaw_Click(object sender, EventArgs e)
        {
            if (cmdUstaw.Text == "Ustaw")
            {
                cmdUstaw.Text = "OK";
                lblAlarm.Visible = false;
                txtAlarm.Visible = true;
                txtAlarm.Focus();
            }
            else if (cmdUstaw.Text == "OK")
            {
                DateTime tmp = new DateTime();
                try
                {
                    tmp = DateTime.Parse(txtAlarm.Text);
                }
                catch
                {
                    lblAlarm.Text = "nie ustawiono";
                    ustawiony = false;
                    txtAlarm.Visible = false;
                    lblAlarm.Visible = true;
                    cmdUstaw.Text = "Ustaw";
                    MessageBox.Show("Błąd", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                alarm = tmp;
                lblAlarm.Text = alarm.ToString("T");
                txtAlarm.Visible = false;
                lblAlarm.Visible = true;
                ustawiony = true;
                cmdUstaw.Text = "Ustaw";
            }
            else if (cmdUstaw.Text == "Stop")
            {
                gra = false;
                dzwonek.Stop();
                cmdUstaw.Text = "Ustaw";
                mnuUstaw.Text = "Ustaw";
            }
        }

        private void frmBudzik_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();
                IkonaTray.Visible = true;
            }
        }

        private void mnuPokaz_Click(object sender, EventArgs e)
        {
            this.Show();
            IkonaTray.Visible = false;
            this.WindowState = FormWindowState.Normal;
        }

        private void mnuUstaw_Click(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal;
            IkonaTray.Visible = false;
            cmdUstaw_Click(sender, e);
        }

        private void mnuWylacz_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void IkonaTray_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button== MouseButtons.Left)
                mnuPokaz_Click(sender, e);
        }

        private void IkonaTray_MouseMove(object sender, MouseEventArgs e)
        {
            IkonaTray.Text = "Czas: " + lblCzas.Text +
                "\nAlarm: " + lblAlarm.Text;
        }
    }
} 
1

http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx:

The SoundPlayer class cannot play other file types, such as .wma or .mp3. If you want to play other file types, you can use the Windows Media Player control. For more information, see Using the Windows Media Player Control in a .NET Framework Solution and Windows Media Player Object Model Reference for Visual Basic .NET and C# in the Windows Media Player SDK.

0

Dodalem Windows Media Playera z biblioteki WMPLib.
No i mam coś takiego i dalej nie działa, błędu nie wywala ale o wskazanej godzinie żaden sygnał sie nie pojawia, martwa cisza :)

Tak to wygląda:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Media;
using System.Windows.Forms;

namespace Budzik
{
    public partial class frmBudzik : Form
    {
        private DateTime alarm = new DateTime();
        private DateTime teraz;
        private bool gra = false;
        private bool ustawiony = false;
        private WMPLib.WindowsMediaPlayer wp = new WMPLib.WindowsMediaPlayer();
        private DateTime koniecalarmu;
        private TimeSpan czastrwania = new TimeSpan(0, 1, 0);

        public frmBudzik()
        {
            InitializeComponent();
            licznik.Start();
        }
        private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
        {
            WMPLib.WindowsMediaPlayer wp = new WMPLib.WindowsMediaPlayer();
            wp.URL = "x.mp3";
            wp.controls.play();
        }


        private void licznik_Tick(object sender, EventArgs e)
        {
            teraz = DateTime.Now;
            lblCzas.Text = teraz.ToString("T");
            if (ustawiony &&
                teraz.Hour == alarm.Hour &&
                teraz.Minute == alarm.Minute &&
                teraz.Second == alarm.Second && !gra)
            {
                gra = true;
                mnuUstaw.Text = "Stop";
                cmdUstaw.Text = "Stop";
                koniecalarmu = DateTime.Now.Add(czastrwania);
                
            }
            if (gra)
            {
                if (koniecalarmu.Hour == teraz.Hour &&
                    koniecalarmu.Minute == teraz.Minute &&
                    koniecalarmu.Second == teraz.Second)
                {
                    mnuUstaw.Text = "Ustaw";
                    cmdUstaw.Text = "Ustaw";
                    gra = false;
                    
                }
            }
        }

        private void cmdUstaw_Click(object sender, EventArgs e)
        {
            if (cmdUstaw.Text == "Ustaw")
            {
                cmdUstaw.Text = "OK";
                lblAlarm.Visible = false;
                txtAlarm.Visible = true;
                txtAlarm.Focus();
            }
            else if (cmdUstaw.Text == "OK")
            {
                DateTime tmp = new DateTime();
                try
                {
                    tmp = DateTime.Parse(txtAlarm.Text);
                }
                catch
                {
                    lblAlarm.Text = "nie ustawiono";
                    ustawiony = false;
                    txtAlarm.Visible = false;
                    lblAlarm.Visible = true;
                    cmdUstaw.Text = "Ustaw";
                    MessageBox.Show("Błąd", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                alarm = tmp;
                lblAlarm.Text = alarm.ToString("T");
                txtAlarm.Visible = false;
                lblAlarm.Visible = true;
                ustawiony = true;
                cmdUstaw.Text = "Ustaw";
            }
            else if (cmdUstaw.Text == "Stop")
            {
                gra = false;
                
                cmdUstaw.Text = "Ustaw";
                mnuUstaw.Text = "Ustaw";
            }
        }

        private void frmBudzik_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();
                IkonaTray.Visible = true;
            }
        }

        private void mnuPokaz_Click(object sender, EventArgs e)
        {
            this.Show();
            IkonaTray.Visible = false;
            this.WindowState = FormWindowState.Normal;
        }

        private void mnuUstaw_Click(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal;
            IkonaTray.Visible = false;
            cmdUstaw_Click(sender, e);
        }

        private void mnuWylacz_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void IkonaTray_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button== MouseButtons.Left)
                mnuPokaz_Click(sender, e);
        }

        private void IkonaTray_MouseMove(object sender, MouseEventArgs e)
        {
            IkonaTray.Text = "Czas: " + lblCzas.Text +
                "\nAlarm: " + lblAlarm.Text;
        }

        
    }
} 
0
        private WMPLib.WindowsMediaPlayer wp = new WMPLib.WindowsMediaPlayer();
...
            WMPLib.WindowsMediaPlayer wp = new WMPLib.WindowsMediaPlayer();

po co tworzysz drugi obiekt?

0

to jak to ma być? Sorry ale jestem początkujący...

0

Dobra działa, tylko jest jeden problem. Ustawiam godzinę i o wskazanej godzinie muzyka sama sie nie włącza tylko trzeba nacisnąć przycisk "play" :( Jak zrobić żeby mp3 sama się "uruchamiała".

1 użytkowników online, w tym zalogowanych: 0, gości: 1