2018年7月15日 星期日

[C# WinForm] Windows Media Player功能應用

工具: VisualStudio2010

電腦內建的Windows Media Player一直是年久不衰的播放軟體,
廢話不多說,簡單說明一下如何在Windows Form裡面加入Windows Media Player元件

Step1: 從工具箱 選擇項目


Step2: COM元件 -> Windows Media Player

Step3: 接下來我們可以從工具箱中找到這個Windows Media Player元件,將它拖曳到專案內
就可以開始使用。我們可以看到在右邊綠色框框中,自動產生了AxInterop.WMPLib與Interop.WMPLib元件



基本上這樣就算完成
我們可以透過下面簡單的指令,讓這個Player可以開始播放音樂:
            this.axWindowsMediaPlayer1.URL = string.Format(@"C:\Users\Jerry\Desktop\What is love.mp3");

我們也可以透過ListBox點了之後,就開始播放,像我就習慣把我喜歡的歌放在一個資料夾內
這裡是用E:\mmusic\ 資料夾

listBox5點選切換事件
        private void listBox5_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.axWindowsMediaPlayer1.URL = string.Format(@"E:\mmusic\" + listBox5.SelectedItem);
        }


進入點:
        private void Form1_Load(object sender, EventArgs e)
        {
            MusicPlayer_initial();
        }

狀態用途,後面會再提到
        private void MusicPlayer_initial()
        {
            MusicFolderRefresh();
            axWindowsMediaPlayer1.PlayStateChange += player_PlayStateChange;
        }

目錄內所有mp3檔案倒進listBox5
        public void MusicFolderRefresh()
        {
            listBox5.Items.Clear();
            string[] tempMusicFile;
            string path = @"E:\mmusic\";
            //tempMusicFile = Directory.GetDirectories(path);
            tempMusicFile = Directory.GetFiles(path, "*.mp3");
 
            foreach (string iii in tempMusicFile)
            {
                listBox5.Items.Add(Path.GetFileName(iii));
            }
        }

顯示畫面:

重複與隨機功能:

在介紹這個功能之前,要先說明下工作狀態
WMPLibrary裡面有播放器的狀態,從字面上可以看出他的各種意思

wmppsUndefinedWindows Media Player is in an undefined state.
wmppsStoppedPlayback is stopped.
wmppsPausedPlayback is paused.
wmppsPlayingStream is playing.
wmppsScanForwardStream is scanning forward.
wmppsScanReverseStream is scanning backward.
wmppsBufferingStream is being buffered.
wmppsWaitingWaiting for streaming data.
wmppsMediaEndedThe end of the media item has been reached.
wmppsTransitioningPreparing new media item.
wmppsReadyReady to begin playing.
wmppsReconnectingTrying to reconnect for streaming data.
wmppsLastLast enumerated value. Not a valid state.


資料來源:
https://docs.microsoft.com/zh-tw/windows/desktop/api/wmp/ne-wmp-wmpplaystate

這裡目前只會使用到wmppsStopped,因為我們的目的是重複播放與隨機播放,所以我們只看結束的那一刻.....

隨機播放:
利用Random產生1~list內項目的數,並透過listBox5.SetSelected(i, true); 使ListBox自動再觸發其他項目來達到隨機循環。


        private void player_PlayStateChange(object sender, 
AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            try
            {
                if (axWindowsMediaPlayer1.playState == 
WMPLib.WMPPlayState.wmppsStopped)
                {
                    if (cbx_RepeatMusic.Checked)
                    {
                        if (cbx_RandomMusic.Checked)
                        {
                            Random rnd = new Random(Guid.NewGuid().GetHashCode());
                            int i = rnd.Next(1, listBox5.Items.Count);
                            listBox5.SetSelected(i, true);
                        }
                        else
                        {
                            axWindowsMediaPlayer1.Ctlcontrols.play();
                        }
                    }
                }
            }
            catch (Exception exx)
            {
                MessageBox.Show(exx.Message + exx.StackTrace);
            }
        }

之前用到的狀態事件用途,可以讓播放器透過簡單的事件來回傳狀態:

_WMPOCXEvents_PlayStateChangeEvent

當Repeat選了之後觸發play,讓Player再播放一次
axWindowsMediaPlayer1.Ctlcontrols.play();

除了Play() //執行
還有其他功能
fastForward(); //向前快轉
fastReverse(); //反向快轉

先這樣,後續會再整理這篇....
Source code之後會更新到GitHub 等我摸熟再整理囉XDD

可能的延伸應用:

1. 針對音樂自訂播放大小聲,比如說哪首歌音量為80,其他為100,就可以防止爆音傷害耳朵XDD





2018年4月28日 星期六

[Xamarin] Visual Studio 2017 安裝步驟教學

這邊使用試用版的Visual Studio Professional 2017,如果你是要看Visual Studio Community 2017的安裝步驟,應該也可以作為參考XD
步驟如下:
Step1: 到Microsoft官方網站下載
直接連下面網址:
https://www.visualstudio.com/zh-hant/vs/
畫面拉到最底有三個選項
下載Visual Studio Professional 2017 Free Trial 點進去
Step2: 下載完後的檔案,就點兩下開始安裝,他會跳出提示,接著點選繼續
 Step3: 他會幫你下載一些基本的環境跟Setup,就等吧。
Step4: 好了之後,出現選單,提示你接下來要安裝哪些項目。基本上就是下左圖的 "使用.NET進行行動開發",右圖是預設的安裝項目。
Step5: 接著就等他慢慢下載安裝囉。
Step6: 安裝完之後他應該會跳出提示重新開機,就按鈕按下去讓他重開吧~~ 原則上,到這裡就已經算是完成安裝了。
把Visual Studio 2017打開,會先載入環境設定。然後出現這個畫面就算安裝完成,我們就可以進一步去選擇我們要開發的步驟啦~~~