マルチメディアコントロールを使って音楽CDを再生し、音をミュートにするためには?


困ったちゃん  2005-02-24 09:25:37  No: 88585

最近マルチメディアコントロールを使っているのですが、音楽CDを再生してミュートをやってもならないのですが、どうしたらいいのでしょうか?
現在は
Private Sub Command1_Click()
    If MMControl1.Silent = False Then
        MMControl1.Silent = True
    Else
        MMControl1.Silent = False
    End If
End Seb
という記述をしているのですが、うごきません。
なぜでしょうか?(へっぽこ質問ですみません(_ _(--;(_ _(--; ペコペコ


ひろ  2005-02-24 18:05:35  No: 88586

ヘルプに「実行時は値の取得のみ可能です」と書いてありますから、そういう物なんじゃないんですか?


困ったちゃん  2005-02-24 19:27:29  No: 88587

音をミュートにするのは不可能ということですか?


ガッ  2005-02-24 20:30:10  No: 88588

マルチメディアコントロールは使ったことが無いので言及できないが、
取得可能なプロパティということならばそれは諦めるしかないと思われ。
で、マルチメディアコントロールに目的のがなかったら他の手段しかないかと。
で、ググってみた。
http://www.google.co.jp/search?hl=ja&c2coff=1&q=visual+basic+%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB+%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%88&lr=


ひろ  2005-02-24 22:13:27  No: 88589

まず最初に謝っておかないと。

>ヘルプに「実行時は値の取得のみ可能です」と書いてありますから、そういう物なんじゃないんですか?

すいません。なんか変な感じがして再度検索し他のですがその様な情報が
見あたりません。探し間違いの様です。

実際に実行時に変更してもエラーになりませんから、実行時の変更は可能だと
いうことで、この内容は無視して下さい
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
で、ここからが本題。

実行時に変更できることになっているのに何故反映されないのかという問題ですが、
1つ気になるのが Slientプロパティを再生処理に反映するタイミングです。
つまり、

・デバイスを開く前
・デバイスを開いて再生を開始するまでの間
・再生中

の内の、どのタイミングでも駄目なのでしょうか?
(音が出ない環境なのでこちらでは実験できません)


ひろ  2005-02-24 22:20:07  No: 88590

>>ヘルプに「実行時は値の取得のみ可能です」と書いてありますから、そういう物なんじゃないんですか?

>すいません。なんか変な感じがして再度検索し他のですがその様な情報が
見あたりません。探し間違いの様です。

Startプロパティの説明文と混同していました。
混乱させてしまって申し訳ないです。


困ったちゃん  2005-02-25 01:35:10  No: 88591

>ガッ様
探してみましたが、いい方法が見つからなかったです。
わざわざ検索ありがとうございます。
(_ _(--;(_ _(--; ペコペコ 

>ひろ様
・デバイスを開く前
・デバイスを開いて再生を開始するまでの間
・再生中
どのタイミングでやってみてもダメでした・・・
 ・゜・(つД`)・゜・

ボリュームコントロールの『CD プレイヤー』のところのミュートの判定を直接いじるしかない様な気がしてきました・・・・
が、初心者の私にはどうやったらできるかわかりません。
特別にコンポーネントの追加をしなくてはいけないのですか?
教えていただけると幸いです。


岡田 之仁  2005-02-25 18:41:30  No: 88592

音のミュートやボリューム制御や・・・は、ミキサーの仕事なので、
ミキサーコントロールのAPIを呼ばないとできないはず。

昔、VBでチャレンジしましたが、たまたま必要な機能の中にVB
のみでは書けないAPIの呼び出し機能があったので、やむなく、
VC++のMFC使って、ActiveX作り、VBから呼びました。

多分、ミュートだけなら、VBでAPI呼び出して書けないカナ〜
調べてみますが、その辺、ご検討下さい。

以上。


mute  2005-02-26 04:17:10  No: 88593

> 多分、ミュートだけなら、VBでAPI呼び出して書けないカナ〜

以下のサンプルに少し手を入れるといいような・・・
http://support.microsoft.com/kb/q178456/
http://www1.harenet.ne.jp/~unaap/download/api/mixervolume.lzh


岡田 之仁  2005-02-26 19:03:12  No: 88594

mute さんの情報で、掲載されているサンプルには、直接mute設定に関わる
プログラミングは含まれていませんネ!〜

確かに少し手を入れることで解決できますが、その元になる情報は、普通
VC関係をやっている人か、Win32 API 関係の書籍持っていないと、Const
定義するMUTE関係の定数が解らないので、手の入れようがないでしょう。

MSDN等ヘルプも含め、ミキサー関係のAPIをお調べになり、定数を抜き出し
ボリューム設定にMUTE定義を渡せば、音は止めれます。

MIXERCONTROL_CONTROLTYPE_MUTE
MIXERCONTROL_CONTROLF_UNIFORM

この2ツの定数定義をサンプルに追加して、いろいろなミキサー定義の
構造体にパラメータ設定して、mixerSetControlDetailsを行なえば、MUTE
できます。コード的には、サンプルでほぼ90%以上含まれていますので
頑張って下さい!

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加