音楽について
投稿者 YAS  (社会人)
投稿日時
2010/7/16 05:37:46
2点確認させてください。
どのような方法で再生していますか?
方法によって現在位置の取得の仕方はちがいます。
音量の変更は再生時の音量でしょうか。
それとも音量を変えたファイルを作成するのでしょうか。
どのような方法で再生していますか?
方法によって現在位置の取得の仕方はちがいます。
音量の変更は再生時の音量でしょうか。
それとも音量を変えたファイルを作成するのでしょうか。
投稿者 kane  (中学生)
投稿日時
2010/7/16 07:01:01
再生方法がよく分からないのでプログラムを載せます。
こんな感じです↓
'再生・再開
Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0)
Call mciSendString("play MySound", "", 0, 0)
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
Button2.Text = "再生"
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
音量を変えたファイルを作成するです。
こんな感じです↓
'再生・再開
Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0)
Call mciSendString("play MySound", "", 0, 0)
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
Button2.Text = "再生"
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
音量を変えたファイルを作成するです。
投稿者 (削除されました)  ()
投稿日時
2010/7/17 10:16:16
(削除されました)
投稿者 YAS  (社会人)
投稿日時
2010/7/17 10:18:28
※一つ上の削除は私です。コードに間違いがありました。ごめんなさい。
高レベルMCIを使っているのですね。
再生位置の表示は次のようになると思います。
ついでにTrackBarを移動すると再生位置も移動するようにしています。
再生時間の取得はTrackBarのMaximumを指定するところを参考にしてください。
音量を変更したファイルの作成は高レベルMCIを使用した方法は思いつきません。
Waveファイルをバイナリで読み込んで直接変更するか,DirectShowを使うことになると思います。
Option Explicit On
Option Strict On
Imports System.Text
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim WithEvents Button1 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "再生"
Me.TrackBar1.Location = New Point(0, 30)
Me.TrackBar1.Width = Me.ClientSize.Width
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FileName As String = Application.StartupPath & "\Test.wav"
Dim Command As String
Command = String.Format("open ""{0}"" alias MySound", FileName)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
TrackBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.TrackBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Dim TrackBar As TrackBar = DirectCast(sender, TrackBar)
Dim Command As String = String.Format("seek {0} to {1}", "MySound", TrackBar.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
End Class
高レベルMCIを使っているのですね。
再生位置の表示は次のようになると思います。
ついでにTrackBarを移動すると再生位置も移動するようにしています。
再生時間の取得はTrackBarのMaximumを指定するところを参考にしてください。
音量を変更したファイルの作成は高レベルMCIを使用した方法は思いつきません。
Waveファイルをバイナリで読み込んで直接変更するか,DirectShowを使うことになると思います。
Option Explicit On
Option Strict On
Imports System.Text
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim WithEvents Button1 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "再生"
Me.TrackBar1.Location = New Point(0, 30)
Me.TrackBar1.Width = Me.ClientSize.Width
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FileName As String = Application.StartupPath & "\Test.wav"
Dim Command As String
Command = String.Format("open ""{0}"" alias MySound", FileName)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
TrackBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.TrackBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Dim TrackBar As TrackBar = DirectCast(sender, TrackBar)
Dim Command As String = String.Format("seek {0} to {1}", "MySound", TrackBar.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
End Class
投稿者 kane  (中学生)
投稿日時
2010/7/18 22:26:35
すいませんできません(泣
この部分にエラーみたいなのが出ます
Dim WithEvents Button1 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
全部コード貼りますのでコードを作ってもらえませんか?
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Declare Function sndPlaySound _
Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Dim FilePath = FileName
Dim FolderName As String
Private aliasName = gg
Dim FileName As String
Private strFolder As String = " "
Private strFileName As String = ""
Dim gg As String
Dim ff As String
Dim aa As String
Dim fm As String
Dim cmd As String
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'再生・再開
Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0)
Call mciSendString("play MySound", "", 0, 0)
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
Button2.Text = "再生"
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'停止
Call mciSendString("Close """ & FileName & """", "", 0, 0)
Me.Label1.Text = FileName & "を停止しました"
Call mciSendString("stop MySound", "", 0, 0)
Call mciSendString("close MySound", "", 0, 0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'ファイルを開く
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
FileName = OpenFileDialog1.FileName
'フォルダ名とファイル名に分けるには
gg = System.IO.Path.GetDirectoryName(FileName) 'ここと
ff = System.IO.Path.GetFileName(FileName) 'ここの()
Select Case IO.Path.GetExtension(FilePath)
Case ".mp3", ".wmv", ".mp4"
Case Else
MessageBox.Show(FileName & "が開かれました")
End Select
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'閉じるイベント
Call mciSendString("Close """ & FileName & """", "", 0, 0)
Me.Close()
End Sub
End Class
お願いします。。
この部分にエラーみたいなのが出ます
Dim WithEvents Button1 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
全部コード貼りますのでコードを作ってもらえませんか?
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Declare Function sndPlaySound _
Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Dim FilePath = FileName
Dim FolderName As String
Private aliasName = gg
Dim FileName As String
Private strFolder As String = " "
Private strFileName As String = ""
Dim gg As String
Dim ff As String
Dim aa As String
Dim fm As String
Dim cmd As String
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'再生・再開
Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0)
Call mciSendString("play MySound", "", 0, 0)
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
Button2.Text = "再生"
Call mciSendString("play """ & FileName & """", "", 0, 0)
Label1.Text = FileName & "を再生中"
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'停止
Call mciSendString("Close """ & FileName & """", "", 0, 0)
Me.Label1.Text = FileName & "を停止しました"
Call mciSendString("stop MySound", "", 0, 0)
Call mciSendString("close MySound", "", 0, 0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'ファイルを開く
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
FileName = OpenFileDialog1.FileName
'フォルダ名とファイル名に分けるには
gg = System.IO.Path.GetDirectoryName(FileName) 'ここと
ff = System.IO.Path.GetFileName(FileName) 'ここの()
Select Case IO.Path.GetExtension(FilePath)
Case ".mp3", ".wmv", ".mp4"
Case Else
MessageBox.Show(FileName & "が開かれました")
End Select
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'閉じるイベント
Call mciSendString("Close """ & FileName & """", "", 0, 0)
Me.Close()
End Sub
End Class
お願いします。。
投稿者 YAS  (社会人)
投稿日時
2010/7/18 23:03:27
>すいませんできません(泣
いやできるはずです。
VB2010でプロジェクトを新規に作成し,まるごとコピー貼り付けします。
「Application.StartupPath & "\Test.wav"」の部分を再生したいファイル名に変えます。
これで実行できるはずです。
>この部分にエラーみたいなのが出ます
エラー「みたいなの」ってどんなものが出るのですか?
>全部コード貼りますのでコードを作ってもらえませんか?
ですから,コード全部作ったのですが...
ファイルを開くところだけ,自分で付け足してみてください。
申し訳ありませんが,kaneさんのコードは突っ込みどころが多すぎて指摘しきれません。
VB6のコードのサンプルコードをそのまま使おうとしているのではありませんか?
コードを全部作ってさしあげるのは,さしたる苦労はないのですが,それを改造していくためには
一行一行のコードを理解する必要があります。私が返信したコードを理解せずにコピー貼り付け
しようとしても問題の解決にはなりません。理解できないところがあれば解説いたしますので,
「ここの意味がわからない」とピンポイントで質問していただけるとありがたいです。
推測ですが,すでにButton1をデザインビューで貼り付けた状態で私のコードを貼り付けたのでは
ありませんか? コードでButton1を作成していますので,「Button1」という名前がダブってしまい
ます。すでにあるButton1か私のコードのButton1の名前を変える必要があると思います。
いやできるはずです。
VB2010でプロジェクトを新規に作成し,まるごとコピー貼り付けします。
「Application.StartupPath & "\Test.wav"」の部分を再生したいファイル名に変えます。
これで実行できるはずです。
>この部分にエラーみたいなのが出ます
エラー「みたいなの」ってどんなものが出るのですか?
>全部コード貼りますのでコードを作ってもらえませんか?
ですから,コード全部作ったのですが...
ファイルを開くところだけ,自分で付け足してみてください。
申し訳ありませんが,kaneさんのコードは突っ込みどころが多すぎて指摘しきれません。
VB6のコードのサンプルコードをそのまま使おうとしているのではありませんか?
コードを全部作ってさしあげるのは,さしたる苦労はないのですが,それを改造していくためには
一行一行のコードを理解する必要があります。私が返信したコードを理解せずにコピー貼り付け
しようとしても問題の解決にはなりません。理解できないところがあれば解説いたしますので,
「ここの意味がわからない」とピンポイントで質問していただけるとありがたいです。
推測ですが,すでにButton1をデザインビューで貼り付けた状態で私のコードを貼り付けたのでは
ありませんか? コードでButton1を作成していますので,「Button1」という名前がダブってしまい
ます。すでにあるButton1か私のコードのButton1の名前を変える必要があると思います。
投稿者 kane  (中学生)
投稿日時
2010/7/18 23:30:30
ここに式が必要ですって出ます(泣
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
投稿者 YAS  (社会人)
投稿日時
2010/7/18 23:48:11
>ここに式が必要ですって出ます(泣
>Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
新しいプロジェクトに私のコードすべてを貼り付けていますか?
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
これはフォームに新しく作成したボタンとトラックバーを追加しているコードです。
「式が必要です」のエラーがでるとは考えにくいです。
エラーが出ているコードをすべて見せてください。
>Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
新しいプロジェクトに私のコードすべてを貼り付けていますか?
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
これはフォームに新しく作成したボタンとトラックバーを追加しているコードです。
「式が必要です」のエラーがでるとは考えにくいです。
エラーが出ているコードをすべて見せてください。
投稿者 るきお  (社会人)
投稿日時
2010/7/19 00:13:59
こんにちは。
多分、kaneさんが使っているVBがVB2005かVB2008なのではないですか?
YASさんのコードは最新版のVB2010で動きます。
VB2010もExpresss Editionは無償なのでぜひダウンロードして使ってみてください。
VB2005やVB2008でも動くようにするには
の個所を
にします。
試してみましたが快適に動作しますよ。つまみをマウスで移動させると再生位置もちゃんとジャンプしてくれてごきげんです。
多分、kaneさんが使っているVBがVB2005かVB2008なのではないですか?
YASさんのコードは最新版のVB2010で動きます。
VB2010もExpresss Editionは無償なのでぜひダウンロードして使ってみてください。
VB2005やVB2008でも動くようにするには
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
の個所を
Me.Controls.AddRange(New Control() {Me.Button1, Me.TrackBar1})
にします。
試してみましたが快適に動作しますよ。つまみをマウスで移動させると再生位置もちゃんとジャンプしてくれてごきげんです。
投稿者 YAS  (社会人)
投稿日時
2010/7/19 00:25:24
>多分、kaneさんが使っているVBがVB2005かVB2008なのではないですか?
あら~。やってしまいました。
るきおさんのおっしゃる通りです。
kaneさん,ごめんなさい。
あら~。やってしまいました。
るきおさんのおっしゃる通りです。
kaneさん,ごめんなさい。
投稿者 kane  (中学生)
投稿日時
2010/7/19 14:58:23
すいません音楽ファイルを開くことが出来なくなりました
どうやったら開けるのでしょうか?
よかったら教えてください。
どうやったら開けるのでしょうか?
よかったら教えてください。
投稿者 るきお  (社会人)
投稿日時
2010/7/19 21:02:25
こんにちは。
YASさんのプログラムがうまく動いたかをまず教えてください。
この掲示板をはじめWeb上の多くの掲示板は、「お互いに」情報を提供する場です。
YASさんがプログラム情報を提供したのに対し、
kaneさんは、「動いた」「動かない」という情報を提供してください。
動かない場合は具体的なエラーなどを教えてください。(そういう意味でこの前のkaneさんの「動かない」という情報は有益でした!)
こういったことが重要な理由の1つはインターネットから検索でたどりついた人に役に立つ情報を書き残しておくためです。kaneさん個人のサポートをする場ではなく、今書きこんでいる人たちや将来検索でたどりつくいろいろな人たちに役に立つ情報を残すのが趣旨です。
前置き長くなりましたが、
音楽ファイルを開くプログラムはYASさんのプログラムを使用されていますか?
音楽ファイルの形式はなんでしょうか?
また、以前は開けていた同じファイルが同じプログラムで開けなくなってしまったということでしょうか?
それとも、違うファイルですか?またプログラムはまったく同じものでしょうか?
YASさんのプログラムがうまく動いたかをまず教えてください。
この掲示板をはじめWeb上の多くの掲示板は、「お互いに」情報を提供する場です。
YASさんがプログラム情報を提供したのに対し、
kaneさんは、「動いた」「動かない」という情報を提供してください。
動かない場合は具体的なエラーなどを教えてください。(そういう意味でこの前のkaneさんの「動かない」という情報は有益でした!)
こういったことが重要な理由の1つはインターネットから検索でたどりついた人に役に立つ情報を書き残しておくためです。kaneさん個人のサポートをする場ではなく、今書きこんでいる人たちや将来検索でたどりつくいろいろな人たちに役に立つ情報を残すのが趣旨です。
前置き長くなりましたが、
音楽ファイルを開くプログラムはYASさんのプログラムを使用されていますか?
音楽ファイルの形式はなんでしょうか?
また、以前は開けていた同じファイルが同じプログラムで開けなくなってしまったということでしょうか?
それとも、違うファイルですか?またプログラムはまったく同じものでしょうか?
投稿者 YAS  (社会人)
投稿日時
2010/7/19 21:52:38
るきおさん,フォローありがとうございます。
おそらくkaneさんは,「やりたいことはわかっているが,どうやるかは全然わからない」状態なのだと
思います。そのため,いろいろなWebページからコピー・貼り付けでコードを書こうとしているので
しょう。(VB6らしきコードが混じっていることや,明らかに不要な変数などが見られることからの推測
ですが...)
わたしも子どものころ,BASICマガジンのコードを意味もよくわからず入力していましたが,そんな段階
なのだと思います。
>すいません音楽ファイルを開くことが出来なくなりました
と,いうことは「再生はできた」ということだと思います。わたしがkaneさんのコードから勝手にファイルを
開くダイアログからファイル名を取得する部分を削除したのものですから困っているのでしょう。
コードの意味を理解していれば追加するのは容易だと思いますが,それが難しいのでしょう。
ですから,コピー・貼り付けで動作する例を提示することにします。
おそらくkaneさんは,「やりたいことはわかっているが,どうやるかは全然わからない」状態なのだと
思います。そのため,いろいろなWebページからコピー・貼り付けでコードを書こうとしているので
しょう。(VB6らしきコードが混じっていることや,明らかに不要な変数などが見られることからの推測
ですが...)
わたしも子どものころ,BASICマガジンのコードを意味もよくわからず入力していましたが,そんな段階
なのだと思います。
>すいません音楽ファイルを開くことが出来なくなりました
と,いうことは「再生はできた」ということだと思います。わたしがkaneさんのコードから勝手にファイルを
開くダイアログからファイル名を取得する部分を削除したのものですから困っているのでしょう。
コードの意味を理解していれば追加するのは容易だと思いますが,それが難しいのでしょう。
ですから,コピー・貼り付けで動作する例を提示することにします。
投稿者 YAS  (社会人)
投稿日時
2010/7/19 21:55:56
ファイルを開くダイアログを追加したサンプルは次のようになると思います。
Option Explicit On
Option Strict On
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.IO
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
Dim FileName As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "再生"
Me.Button2.Text = "停止"
Me.Button3.Text = "開く"
Me.Button2.Location = New Point(80, 0)
Me.Button3.Location = New Point(160, 0)
Me.TrackBar1.Location = New Point(0, 30)
Me.TrackBar1.Width = Me.ClientSize.Width
Me.Controls.AddRange(New Control() {Me.Button1, Me.Button2, Me.Button3, Me.TrackBar1})
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If File.Exists(FileName) Then
Me.Text = Path.GetFileName(FileName) & "を再生中..."
Dim Command As String
Command = String.Format("open ""{0}"" alias {1}", FileName, "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
TrackBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End If
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Stop()
Me.Text = Path.GetFileName(FileName) & "を停止中..."
Dim Command As String
Command = String.Format("stop {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("close {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav"
Me.OpenFileDialog1.InitialDirectory = Application.StartupPath
If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
FileName = Me.OpenFileDialog1.FileName
Me.Text = Path.GetFileName(FileName)
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.TrackBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Dim TrackBar As TrackBar = DirectCast(sender, TrackBar)
Dim Command As String
Command = String.Format("seek {0} to {1}", "MySound", TrackBar.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("play {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
End Class
Option Explicit On
Option Strict On
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.IO
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
Dim FileName As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "再生"
Me.Button2.Text = "停止"
Me.Button3.Text = "開く"
Me.Button2.Location = New Point(80, 0)
Me.Button3.Location = New Point(160, 0)
Me.TrackBar1.Location = New Point(0, 30)
Me.TrackBar1.Width = Me.ClientSize.Width
Me.Controls.AddRange(New Control() {Me.Button1, Me.Button2, Me.Button3, Me.TrackBar1})
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If File.Exists(FileName) Then
Me.Text = Path.GetFileName(FileName) & "を再生中..."
Dim Command As String
Command = String.Format("open ""{0}"" alias {1}", FileName, "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
TrackBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End If
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Stop()
Me.Text = Path.GetFileName(FileName) & "を停止中..."
Dim Command As String
Command = String.Format("stop {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("close {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav"
Me.OpenFileDialog1.InitialDirectory = Application.StartupPath
If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
FileName = Me.OpenFileDialog1.FileName
Me.Text = Path.GetFileName(FileName)
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.TrackBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Dim TrackBar As TrackBar = DirectCast(sender, TrackBar)
Dim Command As String
Command = String.Format("seek {0} to {1}", "MySound", TrackBar.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("play {0}", "MySound")
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
End Class
投稿者 kane  (中学生)
投稿日時
2010/7/21 14:06:24
おかげ様で出来るようになりましたwww
YASさんるきおさんありがとうございましたww
wavファイルよりmp3ファイルが再生できるようにしたいのですが?
どのようにしたらいいでしょうか?
YASさんるきおさんありがとうございましたww
wavファイルよりmp3ファイルが再生できるようにしたいのですが?
どのようにしたらいいでしょうか?
投稿者 YAS  (社会人)
投稿日時
2010/7/21 22:48:00
>wavファイルよりmp3ファイルが再生できるようにしたいのですが?
そうなのですか?
kaneさんの投稿から,それは全然読み取ることができませんでした...
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav"
の行を
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav|MP3形式サウンド(*.mp3)|*.mp3"
と書き換えてください。mp3ファイルも選択できるようになります。
通常はmciでmp3ファイルも再生できると思います。
そうなのですか?
kaneさんの投稿から,それは全然読み取ることができませんでした...
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav"
の行を
Me.OpenFileDialog1.Filter = "サウンドファイル(*.wav)|*.wav|MP3形式サウンド(*.mp3)|*.mp3"
と書き換えてください。mp3ファイルも選択できるようになります。
通常はmciでmp3ファイルも再生できると思います。
投稿者 (削除されました)  ()
投稿日時
2010/7/21 23:34:19
(削除されました)
投稿者 kane  (中学生)
投稿日時
2010/7/21 23:37:25
YASさんありがとうございますww
あのまたエラーが出ます(泣
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
Dim FileName As String
↑Btton1はすでにclassで'Friend WithEvents Button1 As System.Windows.Forms.Button' として既に宣言されています。
ってでます。
どうすればいいでしょうか?
あのまたエラーが出ます(泣
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
Dim FileName As String
↑Btton1はすでにclassで'Friend WithEvents Button1 As System.Windows.Forms.Button' として既に宣言されています。
ってでます。
どうすればいいでしょうか?
投稿者 YAS  (社会人)
投稿日時
2010/7/22 06:03:58
>Btton1はすでにclassで'Friend WithEvents Button1 As System.Windows.Forms.Button' として既に宣言されています。
デザイナで自分でButton1を配置したのだと思います。
Button1が2つあるとエラーになります。
Dim WithEvents Button1 As New Button
を一度消した後,デザイナでbutton1を消し,再び
Dim WithEvents Button1 As New Button
を書いてください。
もしくは新しいプロジェクトを作成して私のコードをコピーしてください。
なお,私のコードはコードだけで完結するために,通常はデザイナで配置するコントロールも
コードで配置しています。自分でデザイナで配置する場合は,
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
の部分を消してください。
デザイナで自分でButton1を配置したのだと思います。
Button1が2つあるとエラーになります。
Dim WithEvents Button1 As New Button
を一度消した後,デザイナでbutton1を消し,再び
Dim WithEvents Button1 As New Button
を書いてください。
もしくは新しいプロジェクトを作成して私のコードをコピーしてください。
なお,私のコードはコードだけで完結するために,通常はデザイナで配置するコントロールも
コードで配置しています。自分でデザイナで配置する場合は,
Dim WithEvents Button1 As New Button
Dim WithEvents Button2 As New Button
Dim WithEvents Button3 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Dim WithEvents OpenFileDialog1 As New OpenFileDialog
の部分を消してください。
どうにか音楽の再生や一時停止や停止は出来るようになりました。
あとしたいのは音楽の再生時間が分かるのと音楽が流れたら徐々にスクロールバーが進むようにしたいです。
それと質問ばかりで申し訳ないのですが・・・
音楽の音量を変更するプログラムも作ってみたいです。