Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

Получение данных о линейном входе и понижение его громкости   Найти похожие ветки 

 
GydruS ©   (2003-03-21 08:32) [0]

Уважаемые всемогущие мастера!! Взываю к вашим могучим знаниям! F1, please!!
Нужно получить данные о линейном входе(а потом понизть его громкость)
Написал кусок кода для проверки работы необходимых функций... но там ошибка. Может, кто подскажет, где и почему ф-я возвращает "один или более параметров не верны"...


{если не лень тестить - не забудьте указать в uses модуль MMSystem}

Function MMCheck(MMRes : MMResult) : boolean;
var S : String;
Begin
Result := False;
case MMRes of
MMSYSERR_NOERROR : Result := True;
MMSYSERR_BADDEVICEID : S := "The hmxobj parameter specifies an invalid device identifier.";
MMSYSERR_INVALFLAG : S := "One or more flags are invalid.";
MMSYSERR_INVALHANDLE : S := "The hmxobj parameter specifies an invalid handle.";
MMSYSERR_INVALPARAM : S := "One or more parameters are invalid.";
MMSYSERR_NODRIVER : S := "No audio mixer device is available for the object specified by hmxobj. The location referenced by puMxId also contains the value -1.";
MIXERR_INVALCONTROL : S := "The control reference is invalid.";
MIXERR_INVALLINE : S := "The audio line reference is invalid.";
end;
if not Result then MessageDlg("Error!"+#13+#10+S,mtError,[mbOk],0);
End;

procedure TForm1.Button1Click(Sender: TObject);
var
{4 mixerGetId}
hmxobj : HMIXEROBJ; {описатель открытого микшера или ссылка на устр-во, ид. микшера котор. необх. получить}
PMxId : UINT; {указатель на переменную, в которую будет помещен идентификатор микшера}
fdwId : DWORD; {флаги состояния}

{4 mixerGetDevCaps}
uMxId : UINT; {идентификатор микшера или описатель микшера, открытого с помошью функции mixerOpen}
pmxcaps : PMIXERCAPSA; {адрес структуры MIXERCAPS, в которую будет помещена информация о микшере}
cbmxcaps : UINT; {размер структуры MIXERCAPS}
SMixInfo : String; {для хранения расшифрованний инфы о миксере}

{4 mixerGetLineInfo}
hmxobjl : HMIXEROBJ; {описатель открытого микшера или ссылка на устр-во, ид. микшера котор. необх. получить}
pmxl : PMIXERLINEA; {куда будет помещена инфа}
fdwInfo : DWORD; {флаги способа получения инфы для данной линии}
SLineInfo : String; {для хранения расшифрованний инфы о линии}

S : String;
caps : MIXERCAPS;
begin

{mixerGetId}
if MixerGetNumDevs > 0 then begin
hmxobj := MixerGetNumDevs-1;
fdwId := MIXER_OBJECTF_WAVEOUT;
MMCheck(mixerGetId(hmxobj, PMxId, fdwId));
SpinEdit1.Value := PMxId;
end;

{mixerGetDevCaps}
uMxId := PMxId;
new(pmxcaps);
cbmxcaps := SizeOf(pmxcaps);
MMCheck(mixerGetDevCaps(uMxId,pmxcaps,cbmxcaps));
SMixInfo := "mixerGetDevCaps:"+#13#10+
"szPname = "+pmxcaps.szPname+";"+#13#10+
"wMid = "+IntToStr(pmxcaps.wMid)+";"+#13#10+
"wPid = "+IntToStr(pmxcaps.wPid)+";"+#13#10+
"vDriverVersion = "+IntToStr(pmxcaps.vDriverVersion)+";"+#13#10+
"fdwSupport = "+IntToStr(pmxcaps.fdwSupport)+";"+#13#10+
"cDestinations = "+IntToStr(pmxcaps.cDestinations)+"."+#13#10;
Dispose(pmxcaps);
Memo1.Lines.Append(SMixInfo);

{mixerGetLineInfo}
hmxobjl := hmxobj;
new(pmxl);
pmxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LINE;
fdwInfo := MIXER_GETLINEINFOF_COMPONENTTYPE;
MMCheck(mixerGetLineInfo(hmxobjl,pmxl,fdwInfo)); // <-- вот тут вываливается ошибка... :(((((
SLineInfo := "mixerGetLineInfo:"+#13#10+
"szName = "+pmxl.szName+";"+#13#10+
"szShortName = "+pmxl.szShortName+";"+#13#10+
"cbStruct = "+IntToStr(pmxl.cbStruct)+";"+#13#10+
"dwDestination = "+IntToStr(pmxl.dwDestination)+";"+#13#10+
"dwSource = "+IntToStr(pmxl.dwSource)+";"+#13#10+
"dwLineID = "+IntToStr(pmxl.dwLineID)+";"+#13#10+
"fdwLine = "+IntToStr(pmxl.fdwLine)+";"+#13#10+
"dwUser = "+IntToStr(pmxl.dwUser)+";"+#13#10+
"dwComponentType = "+IntToStr(pmxl.dwComponentType)+";"+#13#10+
"cChannels = "+IntToStr(pmxl.cChannels)+";"+#13#10+
"cConnections = "+IntToStr(pmxl.cConnections)+";"+#13#10+
"cControls = "+IntToStr(pmxl.cControls)+";"+#13#10+
"Target.szPname = "+pmxl.Target.szPname+";"+#13#10+
"Target.dwType = "+IntToStr(pmxl.Target.dwType)+";"+#13#10+
"Target.dwDeviceID = "+IntToStr(pmxl.Target.dwDeviceID)+";"+#13#10+
"Target.wMid = "+IntToStr(pmxl.Target.wMid)+";"+#13#10+
"Target.wPid = "+IntToStr(pmxl.Target.wPid)+";"+#13#10+
"Target.vDriverVersion = "+IntToStr(pmxl.Target.vDriverVersion)+"."+#13#10;
dispose(pmxl);
Memo1.Lines.Append(SLineInfo);

end;


Огромно спасибо за внимание!


 
GydruS ©   (2003-03-25 03:18) [1]

Неужели вы не знаете, как менять громкость линейного входа?
:(((


 
MrN   (2003-03-29 18:54) [2]

Есть апишная функция в MMSystem



Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-83581
VCV
2003-05-14 07:34
2003.05.26
Подскажите, как реализовать интерфейс


14-83662
gn
2003-05-05 13:32
2003.05.26
Попытка номер 2


14-83683
Dmitriy_R
2003-05-06 07:08
2003.05.26
ServerSocket


7-83782
Ал
2003-03-25 10:48
2003.05.26
Как без перезагрузки изменить картинки у только что зарег. файлов


3-83408
Jaxtor
2003-05-06 14:00
2003.05.26
Вопрос по проектированию БД