(XP,VB6)
サウンドをミュートにしたりミュートを解除したりする方法は、なんとか見つけることができたのですが、現在サウンドがミュート状態かどうかを知る方法がわかりませんでした。
現在ミュート状態かどうかを知るにはどうしたらよいでしょうか?
どうかご教授下さいませ。よろしくお願い申し上げます。
ミュートにしたりミュートを解除したりする方法を見つけたサイト(外国)です。
http://www.st-software.at/tips/tip2103mute.php
mixerGetControlDetails
mixerSetControlDetails
この2つのAPI調べてみて下さい。
できます。
以上。
調べてみましたが、分かりませんでした。
APIを使ったプログラミングはほとんど経験なくチンプンカンプンです。
オショウさん、教えてください、お願いします、後生ですから・・・
以前VBAの質問掲示板で回答したものです。
参考にしてください。
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200610/06100292.txt
何を調べて、その結果何が分からなかったのでしょうか?
API関数の使い方ならVONさんの提示されたリンク先を参考にできませんか?
mixerSetControlDetailsなんかはそのまんま使われているわけですし・・・
API関数の呼び出し宣言(Declare Function 〜 )の書き方が分からないというのであればAPIビューアを使ってください
ちなみに、上記サイトのBlue in 2006/10/30(月) 17:17:39 のコードで
Dim volume As Long
Dim mute As Boolean
MixerVal True, volume, mute
If mute Then
' ミュート状態
Else
' ミュート状態ではない
End If
とチェックします。
Blueさん、ありがとうごさいます。
Blueさんの作られたプログラムをそのまま実行したら見事にできました。
ミキサーって本当に難しいですね。
私の場合ミュートかどうかがわかればいいので、教えて頂いたプログラムを参考に下のような関数にしてみました。
大変助かりました。また困った時はよろしくお願いします。
どうもありがとうございました。
Public Function IsMute() As Boolean
Dim ret As Long
Dim hMixer As Long
Dim mxcd As MIXERCONTROLDETAILS
Dim mxcdMute As MIXERCONTROLDETAILS_BOOLEAN
Call mixerOpen(hMixer, 0, 0, 0, 0)
With mxcd
.cbStruct = Len(mxcd)
.dwControlID = 2
.cChannels = 1
.cMultipleItems = 0
.cbDetails = Len(mxcdMute)
.paDetails = VarPtr(mxcdMute)
End With
If (ret = MMSYSERR_NOERROR) Then
ret = mixerGetControlDetails(hMixer, mxcd, MIXER_OBJECTF_HMIXER Or MIXER_GETCONTROLDETAILSF_VALUE)
IsMute = IIf(mxcdMute.fValue <> 0, True, False)
End If
mixerClose hMixer
End Function
ツイート | ![]() |