質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

731閲覧

プレイリストがうまく行けなくなりました。

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/04/04 11:48

編集2018/04/04 11:51

前回質問させていただいた物です。
すいません、実は去年から作ってたものですが
プレイリストがうまくいけなくなりました。
###原因
1、プレイリストは再生出来る
2、リストボックスから選択しても一番上になる

###ソースコード

form1 Dim strFileName As String Private Sub Playlists_Click(sender As Object, e As EventArgs) Handles playlists.Click AxWindowsMediaPlayer1.settings.autoStart = False OpenFileDialog1.FileName = "" OpenFileDialog1.Multiselect = True OpenFileDialog1.Title = "開くファイルを指定" OpenFileDialog1.Filter = "MP3(*.mp3)|*.mp3| 全てのファイル (*.*)|*.*" OpenFileDialog1.FilterIndex = 1 OpenFileDialog1.RestoreDirectory = True If OpenFileDialog1.ShowDialog() = DialogResult.OK Then End If ’1 For Each strFilePath As String In OpenFileDialog1.FileNames strFileName = IO.Path.GetFileName(strFilePath) ListBox2.Items.Add(strFileName) AxWindowsMediaPlayer1.currentPlaylist.appendItem(AxWindowsMediaPlayer1.newMedia(strFilePath)) Next TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) End Sub Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange Try ’2 For i = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1 If AxWindowsMediaPlayer1.currentMedia.isIdentical(AxWindowsMediaPlayer1.currentPlaylist.Item(i)) Then ListBox2.SelectedIndex = Str(i) ’ここまで End If Next MetroProgressbar1.Value = 0 Catch ex As Exception End Try Select Case e.newState Case WMPLib.WMPPlayState.wmppsPlaying '再生中 TextBox3.Text = AxWindowsMediaPlayer1.currentMedia.durationString Timer3.Start() title.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Title") artist.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Artist") Albam.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Album") Janru.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Genre") MetroProgressbar1.Maximum = AxWindowsMediaPlayer1.currentMedia.duration MetroProgressbar1.Value = 0 Case e.newState = WMPLib.WMPPlayState.wmppsMediaEnded '再生終了 Timer3.Stop() MetroProgressbar1.Value = 0 Case WMPLib.WMPPlayState.wmppsMediaEnded ' 再生が全て終了した時() AxWindowsMediaPlayer1.Ctlcontrols.stop() Case Else Debug.Print(e.newState.ToString() End Select End Sub Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged If ListBox2.SelectedItem <> "" Then ’3 TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) End If End Sub end crass

###試した結果
’1,2では問題なく再生出来るんです。
ただ、3の方に
AxWindowsMediaPlayer1.URL=listbox2.selectedIndex

AxWindowsMediaPlayer1.URL=strFileName As(listbox2.selectedIndex)
など追加して試してみてもできませんでした。
###解決したい事
恐れ入りますが申し訳ございません。
listboxから曲を選択後、再生出来るようにしたい事
一曲目が終わり後に次の曲に再生

申し訳ございませんお願い申し上げます。
使っている環境は前回と同じVistula Studio 2017 VBです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

VB

1Imports System.IO 2Imports System 3Imports WMPLib 4 5Public Class Music00b 6 7 Dim IntSelectIndexPre As Integer = 0 8 9 Private history As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase) 10 'Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 11 ' Dim files = OpenFileDialog1.FileNames 12 ' Dim conflict = files.Where(AddressOf history.Contains) 13 14 ' If conflict.Any() Then 15 ' e.Cancel = True 16 ' Dim fileNames = conflict.Select(AddressOf System.IO.Path.GetFileName) 17 ' MessageBox.Show("同じファイルがあります。" & vbCrLf & String.Join(vbCrLf, fileNames), "競合", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 18 ' Else 19 ' Array.ForEach(files, AddressOf history.Add) 20 ' End If 21 'End Sub 22 Private Sub Music00b_Load(sender As Object, e As EventArgs) Handles MyBase.Load 23 'AxWindowsMediaPlayer1.Hide() 24 TextBox1.ReadOnly = True 25 TextBox2.ReadOnly = True 26 TextBox3.ReadOnly = True 27 TextBox2.ReadOnly = True 28 'PictureBox1.Enabled = False 29 'PictureBox2.Enabled = False 30 'PictureBox3.Enabled = False 31 'PictureBox4.Enabled = False 32 'PictureBox5.Enabled = False 33 'ListBox2.Hide() 34 'Label1.Hide() 35 36 End Sub 37 38 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 39 MetroProgressbar1.Value = 0 40 TextBox2.Text = TimeSpan.FromSeconds(AxWindowsMediaPlayer1.Ctlcontrols.currentPosition).ToString("mm\:ss") 41 Me.Timer1.Enabled = False 42 Me.Timer2.Enabled = True 43 End Sub 44 45 Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick 46 Dim length As Integer 47 Dim current As Integer 48 49 length = If(AxWindowsMediaPlayer1.currentMedia.duration.ToString, 0) 50 51 52 'length = If(AxWindowsMediaPlayer2.currentMedia?.duration, 0) 53 54 current = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition 55 56 MetroProgressbar1.Value = current 57 MetroProgressbar1.Maximum = length 58 59 If MetroProgressbar1.Value = 100 Then 60 MetroProgressbar1.Value = 0 61 End If 62 End Sub 63 64 Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick 65 TextBox2.Text = TimeSpan.FromSeconds(AxWindowsMediaPlayer1.Ctlcontrols.currentPosition).ToString("mm\:ss") 66 End Sub 67 68 Dim Open00a() As String 69 'Dim Open00a As String() 70 Dim file As String() 71 72 73 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 74 '全てクリアされる 75 history.Clear() 76 ListBox2.Items.Clear() 77 TextBox1.Clear() 78 TextBox2.Clear() 79 TextBox3.Clear() 80 playlists.Enabled = True 81 AxWindowsMediaPlayer1.Ctlcontrols.stop() 82 AxWindowsMediaPlayer1.currentPlaylist.clear() 83 Timer1.Stop() 84 Timer2.Stop() 85 Timer3.Stop() 86 MetroProgressbar1.Value = 0 87 MessageBox.Show("リストクリアーしました。", 88 "報告", 89 MessageBoxButtons.OK, 90 MessageBoxIcon.Asterisk) 91 End Sub 92 93 Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click 94 95 AxWindowsMediaPlayer1.Ctlcontrols.play() 96 97 TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) 98 Timer1.Start() 99 Timer2.Start() 100 Timer1.Enabled = True 101 End Sub 102 103 Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click 104 AxWindowsMediaPlayer1.Ctlcontrols.pause() 105 End Sub 106 107 Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click 108 AxWindowsMediaPlayer1.Ctlcontrols.stop() 109 MetroProgressbar1.Value = 0 110 End Sub 111 112 Private Sub HScrollBar1_Scroll(sender As Object, e As ScrollEventArgs) Handles HScrollBar1.Scroll 113 AxWindowsMediaPlayer1.settings.volume = HScrollBar1.Value 114 115 lb2.Text = "" & HScrollBar1.Value 116 End Sub 117 118 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 119 120 If ListBox2.Items.Count = 0 Or ListBox2.SelectedIndex = -1 Then 121 Exit Sub 122 End If 123 124 If ListBox2.Items.Count >= ListBox2.SelectedIndex + 1 Then 125 ListBox2.SelectedIndex -= 1 126 AxWindowsMediaPlayer1.Ctlcontrols.previous() 127 AxWindowsMediaPlayer1.Ctlcontrols.play() 128 MetroProgressbar1.Value = 0 129 Timer1.Start() 130 Timer2.Start() 131 132 Else 133 MessageBox.Show("曲がありません", 134 "エラー", 135 MessageBoxButtons.OK, 136 MessageBoxIcon.Asterisk) 137 AxWindowsMediaPlayer1.Ctlcontrols.stop() 138 Timer1.Stop() 139 Timer2.Stop() 140 End If 141 142 End Sub 143 144 Dim strFileName As String 145 Dim ListMusicPath As String 146 147 Private Sub Playlists_Click(sender As Object, e As EventArgs) Handles playlists.Click 148 AxWindowsMediaPlayer1.settings.autoStart = False 149 OpenFileDialog1.FileName = "" 150 OpenFileDialog1.Multiselect = True 151 OpenFileDialog1.Title = "開くファイルを指定" 152 OpenFileDialog1.Filter = "MP3(*.mp3)|*.mp3|全てのファイル (*.*)|*.*" 153 OpenFileDialog1.FilterIndex = 1 154 OpenFileDialog1.RestoreDirectory = True 155 156 If OpenFileDialog1.ShowDialog() = DialogResult.OK Then 157 158 End If 159 '1 160 For Each strFilePath As String In OpenFileDialog1.FileNames 161 strFileName = IO.Path.GetFileName(strFilePath) 162 163 ListBox2.Items.Add(strFileName) 164 165 AxWindowsMediaPlayer1.currentPlaylist.appendItem(AxWindowsMediaPlayer1.newMedia(strFilePath)) 166 Next 167 TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) 168 169 End Sub 170 Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange 171 Try 172 '2 173 For i = 0 To AxWindowsMediaPlayer1.currentPlaylist.count - 1 174 If AxWindowsMediaPlayer1.currentMedia.isIdentical(AxWindowsMediaPlayer1.currentPlaylist.Item(i)) Then 175 'ListBox2.SelectedIndex = Str(i) 176 'ここまで 177 End If 178 Next 179 MetroProgressbar1.Value = 0 180 Catch ex As Exception 181 End Try 182 183 Select Case e.newState 184 Case WMPLib.WMPPlayState.wmppsPlaying '再生中 185 TextBox3.Text = AxWindowsMediaPlayer1.currentMedia.durationString 186 Timer3.Start() 187 title.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Title") 188 artist.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Artist") 189 Albam.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Album") 190 Janru.Text = AxWindowsMediaPlayer1.currentMedia.getItemInfo("Genre") 191 MetroProgressbar1.Maximum = AxWindowsMediaPlayer1.currentMedia.duration 192 MetroProgressbar1.Value = 0 193 Case e.newState = WMPLib.WMPPlayState.wmppsMediaEnded '再生終了 194 Timer3.Stop() 195 MetroProgressbar1.Value = 0 196 Case WMPLib.WMPPlayState.wmppsMediaEnded 197 ' 再生が全て終了した時() 198 AxWindowsMediaPlayer1.Ctlcontrols.stop() 199 Case Else 200 Debug.Print(e.newState.ToString()) 201 End Select 202 End Sub 203 204 Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged 205 If ListBox2.SelectedItem <> "" Then 206 '3 207 208 TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) 209 210 If IntSelectIndexPre = ListBox2.SelectedIndex Then 211 Exit Sub 212 End If 213 IntSelectIndexPre = ListBox2.SelectedIndex 214 215 AxWindowsMediaPlayer1.Ctlcontrols.playItem(AxWindowsMediaPlayer1.currentPlaylist.Item(ListBox2.SelectedIndex)) 216 AxWindowsMediaPlayer1.Ctlcontrols.play() 217 218 End If 219 End Sub 220End Class 221

こんな感じだと思う...
あ、答え出てた...

たぶん
AxWindowsMediaPlayer1.Ctlcontrols.playItem(AxWindowsMediaPlayer1.currentPlaylist.Item(ListBox2.SelectedIndex))
を追加するだけでいいはず

投稿2018/04/05 01:16

編集2018/04/05 01:28
syameimaru

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/05 09:44

syameimaruさん コードを追加したものです。 ``` Dim IntSelectIndexPre As Integer = 0 Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged If ListBox2.SelectedItem <> "" Then TextBox1.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem) If IntSelectIndexPre = ListBox2.SelectedIndex Then Exit Sub End If IntSelectIndexPre = ListBox2.SelectedIndex AxWindowsMediaPlayer1.Ctlcontrols.playItem(AxWindowsMediaPlayer1.currentPlaylist.Item(ListBox2.SelectedIndex)) AxWindowsMediaPlayer1.Ctlcontrols.play() End If End Sub End Class ``` 無事解決いたしました。 ありがとうございました。
guest

0

現状ですと、AxWindowsMediaPlayer1.currentPlaylistとlistbox2に情報があるかと思います。
listbox2にはファイル名の情報はありますが、パス情報がない為、ここの情報だけでは再生できません。
そして、AxWindowsMediaPlayer1.currentPlaylistとlistbox2の内容は連動するように作成されていると
思います。
ですので、listbox2で選択された項目のindexを取得し、currentPlaylistからそのindexの内容を取得、再生する形になるかと思います。

Controls.playItem
Playlist.item
を参照してください。

投稿2018/04/05 01:01

YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/05 09:46

YAmaGNZさん 回答ありがとうございます。 確かにその通りでした。 参考通り無事解決することが出来ました ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問