Oh, die Frage finde ich nicht so gut Ich dachte der Systemlautstärkeregler reichtrowo hat geschrieben:Nur noch ein Problem: Wie kann ich da die Lautstärke ändern?
Ab Vista:
Code: Alles auswählen
EnableExplicit
#CLSCTX_INPROC_SERVER = $01
#CLSCTX_INPROC_HANDLER = $02
#CLSCTX_LOCAL_SERVER = $04
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
#CLSCTX_INPROC = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER
#CLSCTX_SERVER = #CLSCTX_INPROC_SERVER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
Interface IMMDeviceEnumerator Extends IUnknown
EnumAudioEndpoints(dataFlow, dwStateMask, *ppDevices);
GetDefaultAudioEndpoint(dataFlow, role, ppEndpoint);
GetDevice(pwstrId, ppDevice);
RegisterEndpointNotificationCallback(pClient);
UnregisterEndpointNotificationCallback(pClient);
EndInterface
Interface IAudioEndpointVolume Extends IUnknown
RegisterControlChangeNotify( *pNotify)
UnregisterControlChangeNotify( *pNotify)
GetChannelCount( *pnChannelCount)
SetMasterVolumeLevel( fLevelDB.f)
SetMasterVolumeLevelScalar( fLevel.f,pguidEventContext)
GetMasterVolumeLevel(*pfLevelDB)
GetMasterVolumeLevelScalar(*pfLevel)
SetChannelVolumeLevel(nChannel,fLevelDB.f,pguidEventContext)
SetChannelVolumeLevelScalar( nChannel,fLevel.f,pguidEventContext)
GetChannelVolumeLevel( nChannel,*pfLevelDB.f)
GetChannelVolumeLevelScalar( nChannel,*pfLevel.f)
SetMute( bMute, pguidEventContext)
GetMute( *pbMute)
GetVolumeStepInfo( *pnStep, *pnStepCount)
VolumeStepUp( pguidEventContext)
VolumeStepDown( pguidEventContext)
QueryHardwareSupport( *pdwHardwareSupportMask)
GetVolumeRange( *pflVolumeMindB, *pflVolumeMaxdB, *pflVolumeIncrementdB)
EndInterface
Interface IMMDevice Extends IUnknown
Activate(iid, dwClsCtx, pActivationParams, ppInterface);
OpenPropertyStore( stgmAccess, ppProperties);
GetId(ppstrId);
GetState(pdwState);
EndInterface
Procedure GetEndPointVolume(*endpointvolume)
Protected deviceEnumerator.IMMDeviceEnumerator
Protected hr, defaultDevice.IMMDevice
CoInitialize_(#Null)
hr = CoCreateInstance_(?uuidof_MMDeviceEnumerator, #Null, #CLSCTX_INPROC_SERVER, ?uuidof_IMMDeviceEnumerator,@deviceEnumerator);#CLSCTX_ALL
hr = deviceEnumerator\GetDefaultAudioEndpoint(0, 1, @defaultDevice)
deviceEnumerator\Release()
hr = defaultDevice\Activate(?uuidof_IAudioEndpointVolume, #CLSCTX_INPROC_SERVER, #Null, *endpointVolume);
defaultDevice\release()
ProcedureReturn *endpointvolume
EndProcedure
Procedure FreeEndPointVolume(*endpointvolume.IAudioEndpointVolume)
*endpointvolume\release()
CoUninitialize_()
EndProcedure
Procedure MediaGetVolume()
Protected Volume.IAudioEndpointVolume
Protected volf.f
GetEndPointVolume(@Volume)
Volume\GetMasterVolumeLevelScalar(@volf)
volf = Round(volf * 100, #PB_Round_Nearest)
FreeEndPointVolume(Volume)
ProcedureReturn Int(volf)
EndProcedure
Procedure MediaSetVolume(vol)
Protected Volume.IAudioEndpointVolume
Protected volf.f
If vol < 0 : vol = 0 : EndIf
If vol > 100 : vol = 100 : EndIf
GetEndPointVolume(@Volume)
volf = vol / 100
Volume\SetMasterVolumeLevelScalar(volf, #Null)
FreeEndPointVolume(Volume)
EndProcedure
DataSection
uuidof_IAudioEndpointVolume:
Data.l $5CDF2C82
Data.w $841E,$4546
Data.b $97,$22,$0C,$F7,$40,$78,$22,$9A
uuidof_MMDeviceEnumerator:
Data.l $BCDE0395
Data.w $E52F,$467C
Data.b $8E,$3D,$C4,$57,$92,$91,$69,$2E
uuidof_IMMDeviceEnumerator:
Data.l $A95664D2
Data.w $9614
Data.w $4F35
Data.b $A7,$46,$DE,$8D,$B6,$36,$17,$E6
EndDataSection
Gruß
Thomas