Я пытаюсь подключить Delphi к Windows VolumeControl API для отображения звука WaveOut. я нашел следующий код, но он не работает:Подключить WaveOut к Delphi
function Wave_SuportaControleVolume: boolean;
var
Caps: TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Caps,
SizeOf(Caps)) = MMSYSERR_NOERROR then
Result := Caps.dwSupport and WAVECAPS_VOLUME <> 0
else
Result := false;
end;
type
TVolume = record
Esquerdo: Word;
Direito: Word;
end;
function Wave_ObterVolume: TVolume;
begin
waveOutGetVolume(integer(WAVE_MAPPER), @Result);
end;
procedure Wave_DefinirVolume(Volume: TVolume);
begin
waveOutSetVolume(integer(WAVE_MAPPER), LongWord(Volume));
end;
Когда я использую этот код, значение Wave_ObterVolume не всегда 65535, независимо от того, что я делаю.
Моя цель очень проста: Я хочу видеть значение звука в качестве индикатора выполнения, когда я воспроизвожу файлы MP4 или MP3. У меня уже есть компонент компоновки и таймера, который должен отображаться на индикаторе выполнения. Фактически, для этого я использовал бы какой-то компонент VUMER.
Подробнее: Использование Delphi 7. Я знаю, это очень старый, но это мой доступный инструмент.
Итак, вопрос в том, какой код я использую для доступа к Windows VolumeControl от WaveOut?
У вас возникли проблемы с вашим вопросом. Описание проблемы: «не работает». Мое предположение заключалось в том, что вы не понимали, что означало 65535. Возможно, вы этого не сделали. Но теперь кажется, что вы не будете удовлетворены, пока ваша проблема, что бы она ни была, решена. Все, что мы можем сделать, это попытаться ответить на вопросы, которые вы задаете. –
Возможный дубликат - http://stackoverflow.com/questions/25967462/delphi-get-wave-amplitude –