全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1545
推到 Plurk!
推到 Facebook!

问一个很奇怪的问题:如何用代码改变录音装置?

尚未結案
dg822
一般會員


發表:14
回覆:38
積分:10
註冊:2004-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-22 00:28:40 IP:219.132.xxx.xxx 未訂閱
如何用代码将录音装置设为红色圈圈所指的装置?如下图所示: 發表人 - dg822 於 2005/01/22 00:30:22
dg822
一般會員


發表:14
回覆:38
積分:10
註冊:2004-12-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-15 21:07:49 IP:203.198.xxx.xxx 未訂閱
我找到一个相关的源:
 
BOOL CMixer::GetRecordradio()
{    UINT m_uMxId2;
// HWND m_hWnd;//回调句柄
HMIXER m_hmx2;
MIXERCAPS mxcaps;    //返回系统中混音器数量(如:一块普通声卡提供一个混音器设备)
int devnum=mixerGetNumDevs();
int i=0;    for(i;i cConnections) || 
     (mxl_v.dwComponentType !=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE))
  return FALSE; 
dwSource_v--;//得到编号    //下面这段文字说明在本例中已经没有什么实际意义,是以前调试时留下的,也不删除了,
//可以知道如何控制主音(Volume)线路的禁音状态:
//--可以利用得到的主音(Volume)线路的mxl.dwLineID,
//来查询Volume的禁音状态
//要想查询(或设置)可以混音到DST_SPEAKERS主音(Volume)中的
//相关音源线路(如:wave、micphone等)的禁音状态,还必须再使用
//一次 mixerGetLineInfo 进一步指定其dwLineID
//注意:不要简单的直接修改上面的:
//mxl.dwComponentType = 类型;
//虽然可能有时不会报错,但这成了我们程序中的隐患,
//因为有的线路在DST_SPEAKERS和DST_WAVEIN中均有,如:
//MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC    //下面实现了"强制"单选麦克风线路为录音源输入
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX;
                     //MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxc; //为了得到相应的mxc.dwControlID,
        //锁定mxlc.dwLineID和mxlc.dwControlType指定的线路控制
        //目前将对录音目标单元的录音音源线路做单选(多路复用)
if (::mixerGetLineControls((HMIXEROBJ)m_hmx2,
                           &mxlc,
                           MIXER_OBJECTF_HMIXER |
                           MIXER_GETLINECONTROLSF_ONEBYTYPE)
    != MMSYSERR_NOERROR) return -1;     //根据mxc.dwControlID检索线路,
MIXERCONTROLDETAILS_BOOLEAN mxcdMute[8];
MIXERCONTROLDETAILS mxcd;
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxcd.dwControlID = mxc.dwControlID;//在上面的&mxc得到
mxcd.cChannels = 1;
mxcd.cMultipleItems =mxc.cMultipleItems;//多路因子数目
mxcd.cbDetails = sizeof(*mxcdMute);
mxcd.paDetails =&mxcdMute;//存放检索结果
if (::mixerGetControlDetails((HMIXEROBJ)m_hmx2,
                             &mxcd,
                             MIXER_OBJECTF_HMIXER |
                             MIXER_GETCONTROLDETAILSF_VALUE)
    != MMSYSERR_NOERROR) return -1;    //做相应单选改变
int j;
for(j=0;j<(int)mxc.cMultipleItems;j  )
    mxcdMute[j].fValue=false;
mxcdMute[dwSource_v].fValue=true;     //重新设置dwControlID锁定的线路控制
if (::mixerSetControlDetails((HMIXEROBJ)m_hmx2,
                             &mxcd,
                             MIXER_OBJECTF_HMIXER |
                             MIXER_GETCONTROLDETAILSF_VALUE)
    != MMSYSERR_NOERROR) return -1; 
}//for(i;i
dg822
一般會員


發表:14
回覆:38
積分:10
註冊:2004-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-15 21:11:47 IP:203.198.xxx.xxx 未訂閱
哪位大侠可以将上述C转为Delphi?
dg822
一般會員


發表:14
回覆:38
積分:10
註冊:2004-12-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-24 20:46:01 IP:203.198.xxx.xxx 未訂閱
事隔多日,怕是没人问津了,自己了结
系統時間:2024-03-29 15:34:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!