C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: vb.netでwavファイルをリソース追加後の処理


(過去ログ 167 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■96658 / inTopicNo.1)  vb.netでwavファイルをリソース追加後の処理
  
□投稿者/ エイ (6回)-(2021/01/06(Wed) 12:34:02)

分類:[.NET 全般] 

こんにちは

TestプロジェクトとTestAAプロジェクトの2つ作りました。

Testプロジェクトでアプリ作ってます。
TestAAがdllクラスのプロジェクトです。

TestAAのプロジェクトにリソース追加(wavファイル名:No01.wav)しています。

testプロジェクトのForm1.vbコードにForm1_Loadの所に

コード
Dim strm As System.IO.Stream =

'同期再生する
Dim player As New System.Media.SoundPlayer(strm)
player.PlaySync()
'後始末
player.Dispose()

参考https://dobon.net/vb/dotnet/programing/playembeddedwave.html

TestAAに入れたリソースをTestのフォームに入れるには(Dim strm As System.IO.Stream =の部分)どうしたら出来ますか?

Testプロジェクトのリソースにwav追加、Dim strm As System.IO.Stream =My.Resources.No01なら分かります。
Testプロジェクトのリソースではなく、TestAAのリソース追加した場合
検索してみてもヒットしませんでした。

やりたい事

アプリを起動後、wavが再生するように作ってます。

すいませんがよろしくお願いいたします。

Vistual Studio 2019
Frameworck 4.7
VB.NET
初心者です。
引用返信 編集キー/
■96659 / inTopicNo.2)  Re[1]: vb.netでwavファイルをリソース追加後の処理
□投稿者/ Hongliang (1140回)-(2021/01/06(Wed) 13:02:47)
a. リソースをPublicにする
リソース画面の一番上にアクセス修飾子: FriendをPublicに変更すれば、外部からは
TestAA.My.Resources.No01のように参照できるようになります。
ただこれは個々のリソースごとに設定できるわけではないので、全部のリソースが
外部から参照できるようになります。
見せたくないリソースなんかがあった場合は採用できません。
TestとTestAAの関係にもよりますが、TestAA.My.Resources.Xxxxというのは
それが何なのかTestの側からするとわかりづらい面もあります。

b. DLLが静的プロパティとして再実装して公開する
Public Class SoundStreams
    Public Shared ReadOnly Property No01 As Stream
        Get
            Return My.Resources.No01
        End Get
    End Property
End Class
こういうクラスを自分で実装すれば、TestからはSoundStreams.No01のように参照できます。
適切なクラス名やプロパティ名によって、利用者はResources.とかより直感的に扱えます。
数が多いと手で書いていくのは面倒になりますが。

c. DLLが再生部分まで実装しちゃう
Public Class Sounds
    Public Shared Sub PlayNo01()
        ' SoundPlayerを使ってResources.No01を再生
    End Sub
End Class
ここまで隠蔽すると良い点悪い点がでてきますが、まあ一案として。

引用返信 編集キー/
■96661 / inTopicNo.3)  Re[2]: vb.netでwavファイルをリソース追加後の処理
□投稿者/ エイ (8回)-(2021/01/06(Wed) 17:36:50)
No96659 (Hongliang さん) に返信

> b. DLLが静的プロパティとして再実装して公開する
> Public Class SoundStreams
> Public Shared ReadOnly Property No01 As Stream
> Get
> Return My.Resources.No01
> End Get
> End Property
> End Class
> こういうクラスを自分で実装すれば、TestからはSoundStreams.No01のように参照できます。
> 適切なクラス名やプロパティ名によって、利用者はResources.とかより直感的に扱えます。
> 数が多いと手で書いていくのは面倒になりますが。
>
回答ありがとうございます。
b提案でやった所出来ました。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -