Показать сообщение отдельно

  #2358  
Старый 22.11.2008, 19:29
DiSi
Познающий
Регистрация: 08.12.2007
Сообщений: 92
С нами: 9698030

Репутация: 35
По умолчанию

Как на делфи програмно включать и выключать микрофон?)) нашол тему в гугле:
Цитата:
// Enable/disable "Mute" for several mixer line sources. uses MMSystem; type TMixerLineSourceType = (lsDigital, lsLine, lsMicrophone, lsCompactDisk, lsTelephone, lsWaveOut, lsAuxiliary, lsAnalog, lsLast); function SetMixerLineSourceMute(AMixerLineSourceType: TMixerLineSourceType; bMute: Boolean): Boolean; var hMix: HMIXER; mxlc: MIXERLINECONTROLS; mxcd: TMIXERCONTROLDETAILS; vol: TMIXERCONTROLDETAILS_UNSIGNED; mxc: MIXERCONTROL; mxl: TMixerLine; intRet: Integer; nMixerDevs: Integer; mcdMute: MIXERCONTROLDETAILS_BOOLEAN; begin Result := False; // Check if Mixer is available // Uberprufen, ob ein Mixer vorhanden ist nMixerDevs := mixerGetNumDevs(); if (nMixerDevs < 1) then begin Exit; end; // open the mixer // Mixer offnen intRet := mixerOpen(@hMix, 0, 0, 0, 0); if intRet = MMSYSERR_NOERROR then begin ZeroMemory(@mxl, SizeOf(mxl)); case AMixerLineSourceType of lsDigital: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_DIGITAL; lsLine: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LINE; lsMicrophone: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; lsCompactDisk: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; lsTelephone: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE; lsWaveOut: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; lsAuxiliary: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY; lsAnalog: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_ANALOG; lsLast: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LAST; end; // mixerline info mxl.cbStruct := SizeOf(mxl); intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if intRet = MMSYSERR_NOERROR then begin ZeroMemory(@mxlc, SizeOf(mxlc)); mxlc.cbStruct := SizeOf(mxlc); mxlc.dwLineID := mxl.dwLineID; mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE; mxlc.cControls := 1; mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc; // Get the mute control // Mute control ermitteln intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then begin ZeroMemory(@mxcd, SizeOf(mxcd)); mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS); mxcd.dwControlID := mxc.dwControlID; mxcd.cChannels := 1; mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN); mxcd.paDetails := @mcdMute; mcdMute.fValue := Ord(bMute); // set, unset mute // Stumsschalten ein/aus intRet := mixerSetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); { mixerGetControlDetails(hMix, @mxcd, IXER_GETCONTROLDETAILSF_VALUE); Result := Boolean(mcdMute.fValue); } Result := intRet = MMSYSERR_NOERROR; if intRet <> MMSYSERR_NOERROR then ShowMessage('SetControlDetails Error'); end else ShowMessage('GetLineInfo Error'); end; intRet := mixerClose(hMix); end; end; // Example Call; Beispielaufruf: procedure TForm1.Button1Click(Sender: TObject); begin // Ton ausschalten SetMixerLineSourceMute(lsLine, True); end;
выбивает ошибку в "TMixerLineSourceType=(lsDigital, lsLine, lsMicrophone, lsCompactDisk,
lsTelephone, lsWaveOut, lsAuxiliary, lsAnalog, lsLast);" подскажыте в чем дело?=)))

ссылки по теме:
http://programmersforum.ru/archive/index.php/t-6517.html

http://www.delphisources.ru/pages/faq/base/chg_mic_volume_level.html
 
Ответить с цитированием