あなたが再生できるメディアファイルが含まれるディレクトリにそのコンストラクタへのパスを渡すあなたのForm1
をインスタンス化できます。
public class Form1 : Form
{
WMPLib.WindowsMediaPlayer Player;
String m_Directory;
public Form1(String directory)
{
m_Directory = directory;
}
private void PlayFile(String url)
{
Player = new WMPLib.WindowsMediaPlayer();
Player.PlayStateChange +=
new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
Player.MediaError +=
new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
Player.URL = url;
Player.controls.play();
}
private void Form1_Load(object sender, System.EventArgs e)
{
var di = new DirectoryInfo(m_Directory);
var files = di.GetFiles("*.*").Where(f => f.Extension.ToLowerInvariant() == ".wma");
Random random = new Random();
Int32 randomIndex = random.Next(0,files.Count());
var file = files.ElementAt(randomIndex).FullName;
PlayFile(file);
}
private void Player_PlayStateChange(int NewState)
{
if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
this.Close();
}
private void Player_MediaError(object pMediaObject)
{
MessageBox.Show("Cannot play media file.");
this.Close();
}
}
代わりに、あなたはForm1
でFolderBrowserDialog
を実装し、ユーザーが選択しましょう可能性(Form1_Load
イベントには好ましくない)再生できるメディアファイルを含むディレクトリ:私のコードで
private void PlayRandomButton_Clicked(object sender, System.EventArgs e)
{
DialogResult result = folderBrowserDialog.ShowDialog();
if (result != DialogResult.OK)
return;
String directory = folderBrowserDialog.SelectedPath;
var di = new DirectoryInfo(directory);
var files = di.GetFiles("*.*").Where(f => f.Extension.ToLowerInvariant() == ".wma");
Random random = new Random();
Int32 randomIndex = random.Next(0,files.Count());
var file = files.ElementAt(randomIndex).FullName;
PlayFile(file);
}
.wma
上のフィルタ異なるタイプのファイルを再生できるようにするために、ファイルを修正または改良することができます。例:
private static String[] s_Extensions = new String[] { ".mp3", ".wma", ".wmv" };
// ...
var files = di.GetFiles("*.*").Where(f => s_Extensions.Contains(f.Extension.ToLowerInvariant()));
私にこの質問をする理由はわかりません。あなたのコードですか? – Liam