XP에서 요구되는 것은 불가능합니다. OS는 단순히 애플리케이션 별 볼륨 레벨을 지원하지 않습니다.
SoundActive: Boolean
또는 PlaySounds: Boolean
또는 비슷한 것을 유지하는 설정 클래스를 만들어 원하는 것을 얻을 수 있습니다. 자체 유닛에 배치하고 인스턴스를 생성하는 초기화 섹션 및이를 해제하는 파이널 라이 제이션 섹션 (효과적으로 글로벌 값의 모음으로 만듭니다)을 갖습니다.
이러한 설정에 액세스해야하는 각 장치는 단순히 해당 장치를 포함하는 장치를 사용하고 이에 따라 동작을 조정합니다. 그래서 그냥 검사를 추가해야 무엇이든 자식 클래스 또는 양식 또는 각 :
if CurrentSettings.PlaySounds then
// Code that makes sounds, plays music, whatever.
또한 현재 볼륨 레벨을 추적 (XP, 시스템 전체 수준에서) 방법을 포함 할 수있는 설정 클래스, MMSystem
볼륨 기능을 사용하여 볼륨을 높이거나 낮추는 방법 (여기에는 수많은 예제가 있으며이를 통해 Google이 제공합니다). 그런 다음 앱에서 OnActivate
및 OnDeactivate
이벤트를 사용하여 앱에서 포커스를 얻었을 때 볼륨 레벨을 설정하고 앱에서 포커스를 잃을 때 적절한 볼륨으로 복원 할 수 있습니다.
비스타에서
이상, 당신은 시스템 전체 볼륨 (I 적절한 MMDevAPI
인터페이스 정의와 함께,이 일의 예를 가지고) 또는 장치 레벨을 제어하기 위해 앞서 언급 한 IAudioEndPointVolume
인터페이스 중 하나 GetMasterVolumeLevel
또는 SetMasterVolumeLevel
방법을 사용할 수 있습니다 볼륨 (적절한 장치를 먼저 선택하려면 IMMDevioce.Activate
을 사용하고 ppInterface
매개 변수의 IMMDevice.Activate
에서받은 장치 인터페이스에 위의 IAudioEndPointVolume
메서드 사용). 현재 뮤트 플래그 값을 검색하거나 설정할 수 있도록 응용 프로그램의 오디오 세션에 대한 볼륨 레벨을 제어 GetMasterVolume
및 SetMasterVolume
, 그리고 GetMute
및 SetMute
:
개별 응용 프로그램의 경우 네 가지 방법을 가지고 ISimpleAudioVolume
인터페이스를 사용 그것 각각. (Vista 및 Win7에서 새 오디오 지원을 담당 한 개발자 중 한 명인 MS의 Larry Osterman은 새로운 API의 오디오 유형과 각 기능을 언제 사용할지에 대한 블로그에서 starting point article을 사용합니다.)
사용중인 운영 체제를 런타임에 결정하고 XP와 그 이전 버전에서 MMSystem
기능을 프로그래밍 방식으로 전환하고 Vista 이상에서 MMDevAPI
기능을 전환하는 것이 개념적으로 가능합니다. 그러나 여기에 누군가가 그렇게하기위한 코드를 제공 할 것을 기대하는 것은 약간 무리한 일입니다. 필자가 제공 한 링크를 통해 올바른 방향으로 시작할 수 있으며 길을 따라 걸리는 순간 그 장애를 해결하는 데 도움이되는 훌륭한 도움이 될 것입니다.
이 질문에 대해 살펴 유무 : 내가 기억하는 것에 대해 http://stackoverflow.com/questions/1092466/windows-xp-mute-unmute-audio-in-programmatically-in-python – Sebi
을, XP는했으나, 애플리케이션 당 사운드 레벨. 당신은 당신의 어플리케이션에 중앙 사운드 출력 API를 가지고있을 것이고, Windows API로 보내거나 그냥 무시하고 처리하면 토글 될 것입니다. –
WinXP는 어플리케이션마다 사운드 컨트롤 기능을 가지고 있지 않습니다. 이것은 Vista에 추가되었으며 완전히 새로운 API를 사용하여 새로운 인터페이스를 추가하여 지원합니다. Larry Osterman (MS 구시대 중 한 명)은 자신의 블로그에 새로운 사운드 API 시리즈를 발표했습니다. 이 기계에는 링크가 없지만 인터넷 검색으로 그를 찾을 수 있어야합니다. C/C++에서이 글이 너무 많습니다. 내가 당신을 찾을 수있는 검색어를 찾을 수 있는지 보겠습니다. –