Форум: "Media";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизИзменение источника записи! Найти похожие ветки
← →
serko © (2005-07-29 01:26) [0]Уважаемые мастера и те кто с таким уже встечался!
Я вот нашел такой компонент AMIXER:
www.progiseregi.narod.ru/other/AMIXER.zip
Так вот, вроде то что мне нужно там есть, но все попытки оттуда вытянуть что то заканчивались выскакиванием не понятных для меня ошибок!
Помогите сделать процедурку которая бы включала Line in и выключала Microphone и наоборот.
Я думаю для знающих людей в этом компоненте все есть!
← →
Eraser © (2005-07-29 02:00) [1]
function TfmMain.mixGetMic(var ADest, AConnect: integer): boolean;
var
slDist: TStringList;
i, idDist: integer;
begin
result := false;
if aMixer.Destinations.Count <= 0 then
exit;
aMixer.MixerId := 0;
slDist := TStringList.Create;
try
for i := 0 to aMixer.Destinations.Count - 1 do
begin
slDist.Add(inttostr(aMixer.Destinations[i].Data.dwComponentType));
end;
idDist := slDist.IndexOf(inttostr(MIXERLINE_COMPONENTTYPE_DST_WAVEIN));
if idDist = -1 then
exit;
for i := 0 to aMixer.Destinations[idDist].Connections.Count - 1 do
begin
if aMixer.Destinations[idDist].Connections[i].Data.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE then
begin
ADest := idDist;
AConnect := i;
Break;
//showmessage(aMixer.Destinations[idDist].Connections[i].Data.szName);
end;
end;
Result := true;
finally
slDist.Free;
end;
end;
procedure TfmMain.mixSetMicVolume(AVolume: integer; ACheckOrMute: boolean);
var
iDist, iConnect, iVol: integer;
begin
try
if not mixGetMic(iDist, iConnect) then
exit;
iVol := Round(MaxWord / 100 * AVolume);
aMixer.SetVolume(iDist, iConnect, iVol, iVol, integer(ACheckOrMute));
//aMixer.SetMute(iDist, iConnect, not ACheckOrMute);
except
end;
end;
обрати внимание на integer(ACheckOrMute)!
← →
serko © (2005-07-30 21:39) [2]>> Eraser © (29.07.05 02:00) [1]
Во-первых спасибо что откликнулся!
При обработке функции mixGetMic в месте первого IF выскакивает ошибка Access violation at address 0044EA39 in module Project!
А у тебя он работает?
← →
Eraser © (2005-07-31 01:07) [3]serko © (30.07.05 21:39) [2]
При обработке функции mixGetMic в месте первого IF
Имеется ввиду инструкцияif aMixer.Destinations.Count <= 0 then
?
exit;
На форме должен быть брошен компонент TAMIXER, с именем aMixer.
← →
serko © (2005-07-31 01:22) [4]> На форме должен быть брошен компонент TAMIXER, с именем aMixer.
Гы! а как его туда кинуть?
Я просто прописал Amixer:TAudioMixer;
← →
Eraser © (2005-07-31 01:34) [5]serko © (31.07.05 01:22) [4]
Впринципе должно и как ты написал работать. Попробуй MixerId равным 0 поставить.
Гы! а как его туда кинуть?
Из палитры компонентов. Как же ещё??!
← →
serko © (2005-07-31 13:01) [6]Eraser © (31.07.05 01:34) [5]
>> Впринципе должно и как ты написал работать. Попробуй MixerId равным 0 поставить.
Так он и так равен 0!
....
result := false;
if aMixer.Destinations.Count <= 0 then
exit;
aMixer.MixerId := 0;
slDist := TStringList.Create;
...
>> Из палитры компонентов. Как же ещё??!
А где его там искать закладки Amixer нет, хотя я и установил компонент!
Проcьба! Ты можеш у себя откомпилировать и выслать мне уже работающий код на ser_ega@ukr.net, а дальше я думаю разберусь! Главное чтоб работал!
← →
Eraser © (2005-07-31 13:58) [7]serko © (31.07.05 13:01) [6]
см. вкладку Samples.
← →
serko © (2005-07-31 18:31) [8]Вау круто все заработало! Спасибо тебе большое ты лудший!
Еще маленький вопрос как будет MIXERLINE_COMPONENTTYPE_SRC_Microphone для Line in?
Еще раз большое тебе спасибо! Дальше уже дело техники!
← →
Eraser © (2005-08-02 00:40) [9]serko © (31.07.05 18:31) [8]
как будет MIXERLINE_COMPONENTTYPE_SRC_Microphone для Line in?
см. msdn.com
MIXERLINE_COMPONENTTYPE_SRC_LINE
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c