C# の Windows フォームアプリケーションで MP3 ファイルを再生する
-
C#
で Windows フォームアプリケーションを使用して単純な Mp3 プレーヤーを作成する -
C#
でDirectShow
機能を使用して Mp3 Windows フォームアプリケーションを作成する
この記事では、C#Windows フォームアプリケーションと Windows Media Player を使用して単純な C#mp3 プレーヤーを構築する方法を示します。
C#
で Windows フォームアプリケーションを使用して単純な Mp3 プレーヤーを作成する
まず、次の手順に従って新しい Windows フォームを作成します。
-
Microsoft Visual Studio 2017 または更新されたバージョンを開きます。
-
左上隅にある
ファイル
を見つけて、新しいプロジェクトを開きます。 -
次に、
Windows フォームアプリケーション
を選択して名前を付け、OK
をクリックします。 -
OK
をクリックすると、新しい空のウィンドウフォームが表示されます。
次に、フォームをデザインします。
Windows フォームを作成したら、デザインします。ツールボックス
に WindowsMediaPlayer アイテムがない場合は、次の手順に従います。
-
コンポーネント
を右クリックし、ツールボックス領域のアイテムの選択
をクリックすると、新しいウィンドウが表示されます。 -
COM コンポーネント
タブを選択し、リストからWindows Media Player
項目をクリックします。
アイテムの追加:
-
Windows Media Player
をフォームにドラッグアンドドロップして、その位置を調整します。 -
ListBox
を追加し、Audiolist
という名前を付けて mp3 ファイルリストを選択します。 -
ツールボックスからボタンを追加し、
ChooseButton
という名前を付けます。ボタンを使用してプレイリストを選択しています。リストボックスからオーディオファイルを選択すると、Windows Media Player
で再生されるオーディオファイルのプレイリストがリストボックスに表示されます。
これらの特定の手順に従って、MP3 プレーヤーの Windows フォームを作成できます。
必要なライブラリ:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
まず、file
と filepath
という名前の 2つの文字列配列型グローバル変数を初期化します。
string[] file, filepath;
次に、fileOpen
という名前の OpenFileDialog
型変数を作成します。これは、ストレージからファイルを選択するためのダイアログボックスを起動するために使用されます。
OpenFileDialog fileOpen = new OpenFileDialog();
次に、条件を適用し、以下をパラメーターとして渡します。
if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
この式が true の場合、ファイルの名前は file
変数に保存されます。
file = fileOpen.SafeFileNames;
以下のコマンドを使用して、ファイルのパス全体を filepath
という名前のパス変数に保存します。
filepath = fileOpen.FileNames;
次に、for
ループを使用して、ListBox
にオーディオファイルを追加します。
for (int i = 0; i < file.Length; i++) {
Audiolist.Items.Add(file[i]);
}
その後、ダブルクリックして ListBox
のクリックイベントを生成します。
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {}
次に、このコードは Audiolist
本文に貼り付けられます。このコードは、リストボックス
で指定した名前に関係なく、リストまたはそのファイルへのパスを WindowsMediaPlayer に転送します。
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}
C#Windows フォームアプリケーションと Windows Media Player を使用して単純な C#mp3 プレーヤーを構築するためのソースコードを以下に示します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mp3Player {
public partial class Form1 : Form {
string[] file, filepath;
public Form1() {
InitializeComponent();
}
private void ChooseButton_Click(object sender, EventArgs e) {
OpenFileDialog fileOpen = new OpenFileDialog();
if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
file = fileOpen.SafeFileNames;
filepath = fileOpen.FileNames;
for (int i = 0; i < file.Length; i++) {
Audiolist.Items.Add(file[i]);
}
}
}
private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}
}
}
C#
で DirectShow
機能を使用して Mp3 Windows フォームアプリケーションを作成する
DirectShow
機能を使用して、WindowsMediaPlayer で Mp3Windows フォームアプリケーションを作成します。
Tlbimp
は、COM タイプライブラリのタイプ定義を、共通言語の実行可能アセンブリの同等の定義に変換します。
Tlbimp.exe
の出力は、元のタイプライブラリで宣言されたタイプのランタイムメタデータを含むバイナリファイル(アセンブリ)です。
QuartzTypeLib.dll
を作成するには、次の手順に従います。
-
最初に
tlbimp
ツールを実行します。 -
TlbImp.exe %windir%\system32\quartz.dll
を実行します(この場所またはディレクトリはデバイスごとに異なる場合があります)。 -
出力は
QuartzTypeLib.dll
になります。 -
ソリューションエクスプローラー
でプロジェクト名を右クリックし、[追加]メニュー項目を選択してから[参照]を選択します。QuartzTypeLib.dll
を COM 参照としてプロジェクトに追加します。 -
プロジェクトで
参照
を展開し、QuartzTypeLib
参照を探します。埋め込み相互運用タイプ
を右クリックしてプロパティを選択し、false に変更します。 -
プロジェクト設定で
32 ビットを優先
設定を無効にします。例外を取得したくない場合は、[ビルド]タブ。
このソースコードを使用して、Mp3Windows フォームアプリケーションを作成できます。
using QuartzTypeLib;
public sealed class DirectShowPlayer {
private FilgraphManager fgm;
public void Play(string filepath) {
FilgraphManager fgm = new FilgraphManager();
fgm.RenderFile(filepath);
fgm.Run();
}
public void Stop() {
fgm?.Stop();
}
}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn