同フォルダの拡張子が違うのを再生するには?

解決


manabu  2004-06-25 16:45:14  No: 114341  IP: [192.*.*.*]

同フォルダの音楽ファイルを.exe起動直後に再生させたいです。
で、とりあえず音楽ファイルを曲変更後同じ名前(0001)にし、再生させるようにしましたが、下記のものだとMP3のファイルしか再生できません。avi,wma,wav‥等再生させたいです。どのようにすればいいですか?

Dim music As String

Private Sub Form_Load()

music = App.Path
If Right(music, 1) <> "\" Then music = music & "\"
music = music & "0001.mp3"

WindowsMediaPlayer1.URL = music


End Sub

編集 削除
nanashi  2004-06-25 17:04:04  No: 114342  IP: [192.*.*.*]

> とりあえず音楽ファイルを曲変更後同じ名前(0001)にし、再生させるようにしましたが

どういう意味なのか分からないのは私だけでしょうか?
ソースを見ても、フォームロード時にexeと同じフォルダにある0001.mp3ファイルを再生するだけですよね??
何がしたいのでしょうか?

編集 削除
manabu  2004-06-25 18:11:53  No: 114343  IP: [192.*.*.*]

そうなんですよ。0001.mp3だけしか再生できないんですよ。だからexeの入っているフォルダーに0001.aviを入れていてもエラーが出て再生できません。その再生できるやりかたを教えてください。
あとこのプログラムの狙いは起動直後に再生することと同フォルダに0001(拡張子はwindowsmediaplayerで再生できる物)と名前を変えてそれを利用することです。

編集 削除
manabu  2004-06-25 18:14:09  No: 114344  IP: [192.*.*.*]

訂正
「〜同フォルダに0001(拡張子はwindowsmediaplayerで再生できる物)に名前を変えてそれを利用することです。」

編集 削除
nanashi  2004-06-25 18:19:51  No: 114345  IP: [192.*.*.*]

Dir関数を使ってみてはいかがでしょうか?

Dim sBuff As String

music = App.Path
If Right(music, 1) <> "\" Then music = music & "\"

sBuff = Dir$(music & "0001.*")

If Len(sBuff) > 0 Then
    music = music & sBuff
Else
    Exit Sub
End If

WindowsMediaPlayer1.URL = music


試してませんがたぶんこんな感じ。
じゃ、今日はもう帰ります( ^-^)ノ

編集 削除
マグ  2004-06-25 19:12:10  No: 114346  IP: [192.*.*.*]

あの
0001.aviのファイルの拡張子ってAVIファイルだから
music = music & "0001.avi"
ではないでしょうか?


もし、起動直後、ダイアログボックスを使わずに同フォルダにある
ファイルでいろんな拡張子を再生したいということならば・・・
下に方法を記載しておきます。


1、App.Pathを使いそのアプリケーションがあるフォルダのパスを取得
2、上で記載したパスを使いフォルダ検索でファイルのパスを取得し、配列に入れる
3、For文を使い、配列に入れたパスの拡張子を確認し、音楽ファイルか動画ファイルだった場合別の配列に入れる。その時、コツとしては、カウンターを取っておく。
つまり、こういうこと
Dim a() as String  '←これはフォルダ検索でファイルのパスを取得した配列
Dim b() as String
Dim i as Integer
Dim k as Integer=0
for i=0 to UBound(a)
If 拡張子の確認 then
'動画ファイルか音楽ファイルだった場合の処理
b(k)=a(i)
k=k+1
End If
next
4、bの配列の数を数える
5、WindowsMediaPlayer1.URL = b(0)
とこんな感じでパスをWindowsMediaPlayerに入れる。

manabuさんが書いているソースはVB6のソースですね。
あと、ここに書いてあるソースVB.NETのソースです。
でも、結果的にこのぐらいの関数はVB6でもおそらくあるでしょう。
私はVB6はさわり程度にしかやっていないので、聞かれていも答えようがありません。
VB.NETなら答えられますけどね。
とりあえず、この手順で何とかなると思います。
ダメだったら根性で・・・(笑

編集 削除
manabu  2004-06-25 21:44:59  No: 114347  IP: [192.*.*.*]

解決しました。マグさんnanashiさんありがとうございました。本とか見たりして調べたりしたんですけどわからず、やっぱりここに来ると色々な関数やその使い方がわかり大変重宝します。今後ともよろしゅうに。

編集 削除