Używam tego kodu do wyciszenia/przywrócenia głośności System:Jak sprawdzić, czy główny głośnik systemu jest wyciszony lub wyłączony?
const
APPCOMMAND_VOLUME_MUTE = $80000;
WM_APPCOMMAND = $319;
procedure TForm1.Button1Click(Sender: TObject);
begin
// toggle mute/unmute
SendMessageW(Handle, WM_APPCOMMAND, Handle, APPCOMMAND_VOLUME_MUTE);
end;
(got kod z https://stackoverflow.com/a/154128/1140885)
Działa dobrze na XP (nie testowałem go na Win7 jeszcze).
Potrzebuję metody, aby sprawdzić (uzyskać), jaki jest obecny stan "wyciszenia"? Czy to niema, czy nie.
Jakieś pomysły?
Aktualizacja: Do XP skończyło się używając kodu stąd: How to get the master volume in windows xp? (Dzięki @Sertac Akyuz)
musiałem zmienić tylko jedną linię:
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
na:
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
wartość zwracana jest albo 0 (nie wycisz) lub 1 (wycisz).
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/ 0152ff8a-0d1c-4cad-b7cd-32d18ea9975d –
http://support.microsoft.com/kb/118377 – OnTheFly