HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0103
UNGAスピーカーの音量を0(ミュート)にしたい8解決


UNGA

リンク

2018/1/3(Wed) 17:46:10|NO.82156

お世話になります。プログラムから、PCのスピーカーの音量を0(ミュート)にするにはどうすればよいでしょうか。



この記事に返信する


ゆー

リンク

2018/1/4(Thu) 10:30:19|NO.82157




UNGA

リンク

2018/1/4(Thu) 19:40:31|NO.82162

お返事ありがとうございます。
教えていただいた過去記事のスクリプトを見ました。
正直、高度すぎて何をしているのか半分もわかりませんでしたが・・・。

マスターボリュームをミュートしたかったのでプログラムの後ろの部分に
ISimpleAudioVolume_SetMute sav, 0, 1
と入れてみましたが、ボリュームに変化ありませんでした。
これではだめなのでしょうか?


ISimpleAudioVolume_SetMute sav, 0, 1 mesbox bufMB, ginfo_winx, ginfo_winy/2, 4 delcom sEnum delcom sm delcom aev delcom dev delcom devEnum stop

P.S.
過去記事検索しようとすると文字化けして検索できません。
この解決方法ももしわかりましたら教えてください。



あまら

リンク

2018/1/4(Thu) 20:33:19|NO.82163

引数の順番間違い、もしくはTRUEとFALSEの勘違いによるもの?

ISimpleAudioVolume_SetMute sav, 1, 0 ; ミュートにする wait 300 ; 3秒だけ維持 ISimpleAudioVolume_SetMute sav, 0, 0 ; ミュート解除
これを音楽でも流しながら実行してみてください。
たぶん3秒だけミュートし、その後戻るはずです。


そして細かくデバイス指定をしないのなら引数省略も可能です。

ISimpleAudioVolume_SetMute sav, 1 ; ミュートにする wait 300 ; 3秒だけ維持 ISimpleAudioVolume_SetMute sav, 0 ; ミュート解除
これでも実行できるはず。。。


文字化けに関しては不明です。



UNGA

リンク

2018/1/4(Thu) 21:28:48|NO.82165

いけました!
有難うございます。

ちなみに、末尾に0を付けるのと付けないのとでは何が違うのでしょうか?



UNGA

リンク

2018/1/4(Thu) 21:35:57|NO.82166

質問ついでにもう一つ教えてください。

この方法でミュートした場合、通知領域のボリュームコントロールには
反映されないのでしょうか。また、ミュートされた状態がボリュームコ
ントロールからは復帰することができないのはなぜでしょうか。



UNGA

リンク

2018/1/4(Thu) 22:01:38|NO.82167

大変すみません。
できたと思ったのですが、不完全でした。
まったく同じプログラムで、ミュートできるときとできないときがあります。
タイミングの問題かとも思い、いろいろやってみましたが、原因が特定できません。
不思議です・・・。


#include "ole32.as" // tofloat todouble by sprocket氏 #module #defcfunc tofloat double p1 temp = p1 return lpeek(temp) >> 29 & 7 | (p1 < 0) << 31 |lpeek(temp, 4) - (p1 ! 0) * 0x38000000 << 3 #defcfunc todouble int p1 temp = 0.0 lpoke temp, 4, (p1 & 0x80000000) | (((p1 & 0x7fffffff) >> 3) + ((p1 & 0x7fffffff) ! 0) * 0x38000000) lpoke temp, 0, p1 << 29 return temp #global #ifndef IMMDeviceEnumerator #define global IID_IMMDeviceEnumerator "{A95664D2-9614-4F35-A746-DE8DB63617E6}" #define global CLSID_MMDeviceEnumerator "{BCDE0395-E52F-467C-8E3D-C4579291692E}" #usecom global IMMDeviceEnumerator IID_IMMDeviceEnumerator CLSID_MMDeviceEnumerator #comfunc global IMMDeviceEnumerator_EnumAudioEndpoints 3 int,int,var #comfunc global IMMDeviceEnumerator_GetDefaultAudioEndpoint 4 int,int,var #comfunc global IMMDeviceEnumerator_GetDevice 5 wstr,var #comfunc global IMMDeviceEnumerator_RegisterEndpointNotificationCallback 6 int #comfunc global IMMDeviceEnumerator_UnregisterEndpointNotificationCallback 7 int #endif // IMMDeviceEnumerator #ifndef IMMDeviceCollection #define global IID_IMMDeviceCollection "{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}" #usecom global IMMDeviceCollection IID_IMMDeviceCollection "{}" #comfunc global IMMDeviceCollection_GetCount 3 var #comfunc global IMMDeviceCollection_Item 4 int,var #endif // IMMDeviceCollection #ifndef IMMDevice #define global IID_IMMDevice "{D666063F-1587-4E43-81F1-B948E807363F}" #usecom global IMMDevice IID_IMMDevice "{}" #comfunc global IMMDevice_Activate 3 var,int,int,var #comfunc global IMMDevice_OpenPropertyStore 4 int,var; #comfunc global IMMDevice_GetId 5 wstr #comfunc global IMMDevice_GetState 6 var #endif // IMMDevice #ifndef IAudioEndpointVolume #define global IID_IAudioEndpointVolume "{5CDF2C82-841E-4546-9722-0CF74078229A}" #usecom global IAudioEndpointVolume IID_IAudioEndpointVolume "{}" #comfunc global IAudioEndpointVolume_RegisterControlChangeNotify 3 int #comfunc global IAudioEndpointVolume_UnregisterControlChangeNotify 4 int #comfunc global IAudioEndpointVolume_GetChannelCount 5 var #comfunc global IAudioEndpointVolume_SetMasterVolumeLevel 6 int,int #comfunc global IAudioEndpointVolume_SetMasterVolumeLevelScalar 7 int,int #comfunc global IAudioEndpointVolume_GetMasterVolumeLevel 8 var #comfunc global IAudioEndpointVolume_GetMasterVolumeLevelScalar 9 var #comfunc global IAudioEndpointVolume_SetChannelVolumeLevel 10 int,int,int #comfunc global IAudioEndpointVolume_SetChannelVolumeLevelScalar 11 int,int,int #comfunc global IAudioEndpointVolume_GetChannelVolumeLevel 12 int,var #comfunc global IAudioEndpointVolume_GetChannelVolumeLevelScalar 13 int,var #comfunc global IAudioEndpointVolume_SetMute 14 int,int #comfunc global IAudioEndpointVolume_GetMute 15 var #comfunc global IAudioEndpointVolume_GetVolumeStepInfo 16 var,var #comfunc global IAudioEndpointVolume_VolumeStepUp 17 var #comfunc global IAudioEndpointVolume_VolumeStepDown 18 var #comfunc global IAudioEndpointVolume_QueryHardwareSupport 19 var #comfunc global IAudioEndpointVolume_GetVolumeRange 20 var,var,var #endif // IAudioEndpointVolume #ifndef IAudioSessionManager2 #define global IID_IAudioSessionManager2 "{77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F}" #usecom global IAudioSessionManager2 IID_IAudioSessionManager2 "{}" #comfunc global IAudioSessionManager2_GetSessionEnumerator 5 var #comfunc global IAudioSessionManager2_RegisterSessionNotification 6 int #comfunc global IAudioSessionManager2_UnregisterSessionNotification 7 int #comfunc global IAudioSessionManager2_RegisterDuckNotification 8 wstr,int #comfunc global IAudioSessionManager2_UnregisterDuckNotification 9 int #endif // IAudioSessionManager2 #ifndef IAudioSessionEnumerator #define global IID_IAudioSessionEnumerator "{E2F5BB11-0570-40CA-ACDD-3AA01277DEE8}" #usecom global IAudioSessionEnumerator IID_IAudioSessionEnumerator "{}" #comfunc global IAudioSessionEnumerator_GetCount 3 var #comfunc global IAudioSessionEnumerator_GetSession 4 int,var #endif // IAudioSessionEnumerator #ifndef IAudioSessionControl #define global IID_IAudioSessionControl "{F4B1A599-7266-4319-A8CA-E70ACB11E8CD}" #usecom global IAudioSessionControl IID_IAudioSessionControl "{}" #comfunc global IAudioSessionControl_GetState 3 var #comfunc global IAudioSessionControl_GetDisplayName 4 var #comfunc global IAudioSessionControl_SetDisplayName 5 wstr,int #comfunc global IAudioSessionControl_GetIconPath 6 var #comfunc global IAudioSessionControl_SetIconPath 7 wstr,int #comfunc global IAudioSessionControl_GetGroupingParam 8 var #comfunc global IAudioSessionControl_SetGroupingParam 9 var,int #comfunc global IAudioSessionControl_RegisterAudioSessionNotification 10 int #comfunc global IAudioSessionControl_UnregisterAudioSessionNotification 11 int #endif // IAudioSessionControl #ifndef IAudioSessionControl2 #define global IID_IAudioSessionControl2 "{bfb7ff88-7239-4fc9-8fa2-07c950be9c6d}" #usecom global IAudioSessionControl2 IID_IAudioSessionControl2 "{}" #comfunc global IAudioSessionControl2_Release 2 #comfunc global IAudioSessionControl2_GetState 3 var #comfunc global IAudioSessionControl2_GetDisplayName 4 var #comfunc global IAudioSessionControl2_SetDisplayName 5 wstr,int #comfunc global IAudioSessionControl2_GetIconPath 6 var #comfunc global IAudioSessionControl2_SetIconPath 7 wstr,int #comfunc global IAudioSessionControl2_GetGroupingParam 8 var #comfunc global IAudioSessionControl2_SetGroupingParam 9 var,int #comfunc global IAudioSessionControl2_RegisterAudioSessionNotification 10 int #comfunc global IAudioSessionControl2_UnregisterAudioSessionNotification 11 int #comfunc global IAudioSessionControl2_GetSessionIdentifier 12 var #comfunc global IAudioSessionControl2_GetSessionInstanceIdentifier 13 var #comfunc global IAudioSessionControl2_GetProcessId 14 var #comfunc global IAudioSessionControl2_IsSystemSoundsSession 15 #comfunc global IAudioSessionControl2_SetDuckingPreference 16 int #endif // IAudioSessionControl2 #ifndef ISimpleAudioVolume #define global IID_ISimpleAudioVolume "{87CE5498-68D6-44E5-9215-6DA47EF883D8}" #usecom global ISimpleAudioVolume IID_ISimpleAudioVolume "{}" #comfunc global ISimpleAudioVolume_SetMasterVolume 3 int,int #comfunc global ISimpleAudioVolume_GetMasterVolume 4 var #comfunc global ISimpleAudioVolume_SetMute 5 int,int #comfunc global ISimpleAudioVolume_GetMute 6 var #endif // ISimpleAudioVolume sdim bufMB, 1024 newcom devEnum, IMMDeviceEnumerator IMMDeviceEnumerator_GetDefaultAudioEndpoint devEnum, 0, 0, p if ( stat ){ end } newcom dev, IMMDevice, -1, p iid = 0x5cdf2c82, 0x4546841e, 0xf70c2297, 0x9a227840 IMMDevice_Activate dev, iid, 1, 0, p if ( stat ){ end } newcom aev, IAudioEndpointVolume, -1, p IAudioEndpointVolume_GetMute aev, p1 IAudioEndpointVolume_GetMasterVolumeLevelScalar aev, p2 p3 = int(todouble(p2) * 100) bufMB += strf("IAudioEndpointVolume Mute: %d Vol: %d\n\n", p1, p3) iid = 0x77aa99a0, 0x484f1bd6, 0x652cc78b, 0x6f9b9a4c IMMDevice_Activate dev, iid, 1, 0, p if ( stat ){ end } newcom sm, IAudioSessionManager2, -1, p IAudioSessionManager2_GetSessionEnumerator sm, p if ( stat ){ end } newcom sEnum, IAudioSessionEnumerator, -1, p IAudioSessionEnumerator_GetCount sEnum, p bufMB += strf("IAudioSessionEnumerator_GetCount: %d\n\n", p) bufMB += strf("ProcessID State Mute Vol Name\n") repeat p IAudioSessionEnumerator_GetSession sEnum, cnt, p newcom sc, IAudioSessionControl2, -1, p IAudioSessionControl2_GetProcessId sc, p1 IAudioSessionControl2_GetState sc, p2 IAudioSessionControl2_GetDisplayName sc, p dupptr dp, p, 1024, 2 querycom sav, sc, ISimpleAudioVolume ISimpleAudioVolume_GetMute sav, p3 ISimpleAudioVolume_GetMasterVolume sav, p4 p5 = int(todouble(p4) * 100) bufMB += strf("%9d %4d %4d %4d %s\n", p1, p2, p3, p5, cnvwtos(dp)) CoTaskMemFree p delcom sc loop title "Test Core Audio" objmode 2 ;-------------------------------------------------------------------------- ISimpleAudioVolume_SetMute sav, 1,0 ; ミュートにする wait 300 ; 3秒だけ維持 ISimpleAudioVolume_SetMute sav, 0,0 ; ミュート解除     ;--------------------------------------------------------------------------      mesbox bufMB, ginfo_winx, ginfo_winy/2, 4 delcom sEnum delcom sm delcom aev delcom dev delcom devEnum stop



あまら

リンク

2018/1/4(Thu) 23:13:00|NO.82168

申し訳ありません。色々勘違いしていました。
先の回答の方はアプリケーションごとによって音量調整する系統なので
PC全体の音量調整ではないですね。

Vista以降のサウンドはだいぶ複雑になっていて、日本語の解説もまだ少ないんですよね。

スピーカーの音量(全ての音量操作)ならこちらが参考になるかもしれません。
http://hsp.tv/play/pforum.php?mode=pastwch&num=34666

関数は下記の4つだけのようです。

GetMasterVolumeVista
SetMasterVolumeVista
GetMuteVista
SetMuteVista


勘違いのお詫びついでにそれぞれの使い方&解説させていただくと

p01 = GetMasterVolumeVista(); 変数p01に現在の音量(0〜100)が取得される

SetMasterVolumeVista p01; 変数p01(0〜100)の値が音量に設定される

p01 = GetMuteVista(); p01にミュートの状態が取得される 0=ミュートではない 1=ミュート

SetMuteVista p01; p01の値でミュート状態の設定ができる 0=ミュート解除 1=ミュートにする


……説明するまでもなかったですかね。
アプリケーションごとに音量調整、ミュート設定などする場合は
ゆーさんが書き込まれた先のソースを利用しないといけません。



UNGA

リンク

2018/1/5(Fri) 07:33:35|NO.82172

大変親切にありがとうございました。
全て解決しました。

まだまだ分からないことばかりですが、精進します。



ONION software Copyright 1997-2023(c) All rights reserved.