![]() |
AW: Peak vom Audioausgang
GetPeakValue ist eine Methode des Interfaces IAudioMeterInformation.
IAudioMeterInformation müßtest du also irgendwie importieren. ![]() ![]() ![]() |
AW: Peak vom Audioausgang
Mit himitsus Bsp. konnte ich jetzt auf die schnelle das hier finden:
Zitat:
Edit: Nicht getestet :) |
AW: Peak vom Audioausgang
mich würde es direkt am ausgang interessieren, also was auf die lautsprecher rausgeht,
|
AW: Peak vom Audioausgang
Zitat:
|
AW: Peak vom Audioausgang
spotan würde ich mal sagen, du mußt nur noch das richtige Interface abfragen.
Delphi-Quellcode:
.
defaultDevice.Activate(IID_..., CLSCTX_INPROC_SERVER, nil, ...);
Delphi-Quellcode:
leider hat sich hier aber jemand viel Arbeit erspart und das Intereface nicht komplett deklariert (den Inhalt einfach weggelassen)
var
audioMeterInformation: IAudioMeterInformation; procedure TForm1.FormCreate(Sender: TObject); var deviceEnumerator: IMMDeviceEnumerator; defaultDevice: IMMDevice; begin CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator); deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice); defaultDevice.Activate(IID_IAudioMeterInformation, CLSCTX_INPROC_SERVER, nil, audioMeterInformation); end; var H: HRESULT; H := audioMeterInformation.GetPeakValue(Peak); if H = S_OK then Peak_anzeigen else ShowMessage(SysErrorMessage(H));
Delphi-Quellcode:
Bei Interfaces kommt es aber auf die Reihenfolge der Methoden an
const
IID_IAudioMeterInformation : TGUID = '{C02216F6-8C67-4B5B-9D00-D008E73E0064}'; IAudioMeterInformation = interface(IUnknown) ['{C02216F6-8C67-4B5B-9D00-D008E73E0064}'] ... function GetPeakValue(out Peak: Real): HRESULT; stdcall; ... end; (hier wird meißtens über den Index und nicht über Methodenname gearbeitet) darum mußt du nur noch den Rest der Interfacedeklaration (oder zumindestens die Anzahl der Methoden vor deiner gewünschten Methode) rausbekommen > ![]() Das schon bekannte GetPeakValue ließ sich leicht übersetzen und einfügen.
Delphi-Quellcode:
Die Deklaration der restlichen Methoden ist aber auch noch im MSDN zu finden.
IAudioMeterInformation = interface(IUnknown)
['{C02216F6-8C67-4B5B-9D00-D008E73E0064}'] procedure dummy_GetChannelsPeakValues; stdcall; procedure dummy_GetMeteringChannelCount; stdcall; function GetPeakValue(out Peak: Real): HRESULT; stdcall; procedure dummy_QueryHardwareSupport; stdcall; end; PS: ![]() Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz