![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение источника записи! [D6, WinXP]
serko © (2005-07-29 01:26:00)Уважаемые мастера и те кто с таким уже встечался!
Я вот нашел такой компонент AMIXER:
www.progiseregi.narod.ru/other/AMIXER.zip
Так вот, вроде то что мне нужно там есть, но все попытки оттуда вытянуть что то заканчивались выскакиванием не понятных для меня ошибок!
Помогите сделать процедурку которая бы включала Line in и выключала Microphone и наоборот.
Я думаю для знающих людей в этом компоненте все есть!
Eraser (2005-08-02 00:40:00) [1]serko © (31.07.05 18:31) [8]
как будет MIXERLINE_COMPONENTTYPE_SRC_Microphone для Line in?
см. msdn.com
MIXERLINE_COMPONENTTYPE_SRC_LINE
serko (2005-07-31 18:31:00) [2]Вау круто все заработало! Спасибо тебе большое ты лудший!
Еще маленький вопрос как будет MIXERLINE_COMPONENTTYPE_SRC_Microphone для Line in?
Еще раз большое тебе спасибо! Дальше уже дело техники!
Eraser (2005-07-31 13:58:00) [3]serko © (31.07.05 13:01) [6]
см. вкладку Samples.
serko (2005-07-31 13:01:00) [4]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 01:34:00) [5]serko © (31.07.05 01:22) [4]
Впринципе должно и как ты написал работать. Попробуй MixerId равным 0 поставить.
Гы! а как его туда кинуть?
Из палитры компонентов. Как же ещё??!
serko (2005-07-31 01:22:00) [6]> На форме должен быть брошен компонент TAMIXER, с именем aMixer.
Гы! а как его туда кинуть?
Я просто прописал Amixer:TAudioMixer;
Eraser (2005-07-31 01:07:00) [7]serko © (30.07.05 21:39) [2]
При обработке функции mixGetMic в месте первого IF
Имеется ввиду инструкцияif aMixer.Destinations.Count <= 0 then?
exit;
На форме должен быть брошен компонент TAMIXER, с именем aMixer.
serko (2005-07-30 21:39:00) [8]>> Eraser © (29.07.05 02:00) [1]
Во-первых спасибо что откликнулся!
При обработке функции mixGetMic в месте первого IF выскакивает ошибка Access violation at address 0044EA39 in module Project!
А у тебя он работает?
Eraser (2005-07-29 02:00:00) [9]
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)!