高分求助:为什么98下TAPI.LineGetID可以取得wave/out的Modem设备号,在2000下就不行了?我在98下用的很好的LineGetID,能取得Modem放音设备的wave/out设备号,在2000下怎么不行了?我用的是www.delphi-jedi.org下的TAPI函数库,2000年版本的。谢谢啊。
解决方案 »
- 有关于DBEdit数据控制控件的一个问题,还望好人能够相助啊!!!!!!!!!
- 如何在dbgrideh的统计栏(footers)中显示real型数据?
- 关于showmodal.result问题,解结就给分
- 简单问题:DELPHI客户端怎么得到EJB传递的数组?通过SOAP
- 怎么把Tchart中的曲线拟合成光滑的?
- 用adotable对数据库进行操作的问题。
- 关于richedit的一个问题!
- 这样的错误怎么解决?在线等待......
- 用Delphi中的Database Desktop怎样插入一个新的字段在表中
- 怎样通过ADO创建一个MDB(Access2000)文件?即是一个库。
- 高分求助:为什么98下TAPI.LineGetID可以取得wave/out的Modem设备号,在2000下就不行了?
- 怎么限制在edit组件中输入的字符类型?
//我现在用的函数:
Function GetWaveDeviceID:dWord;
Var
nState,nNeedSize,nLen,nSType:dWord;
xVarString:pVarString;
xValue:pChar;
Begin
Result:=0; nState:=0;
nLen:=8; //用来保存ID的长度
nNeedSize:=SizeOf(TVarString)+nLen;
With Frm_Call do
Try
While True do begin //因为缓冲区可能小
GetMem(xVarString,nNeedSize); //分配内存区,注意:此处需为VarString而不是他的指针!!
xVarString.dwTotalSize:=nNeedSize; //初始化变量 StringFormat_Binary
nState:=LineGetID(Line,AddressID,Call,LINECALLSELECT_Call,xVarString,'wave/out'); //成功返回0;2147483725 = STRUCTURETOOSMALL
if xVarString.dwTotalSize>=xVarString.dwNeededSize then Break; //重新分配内存区
if (nState<>LINEERR_STRUCTURETOOSMALL) and (nState<>0) then Exit;
nNeedSize:=xVarString.dwNeededSize+nLen;
FreeMem(xVarString);
End;
//dwWaveDev = (DWORD) * ((DWORD *) ((LPSTR)vs + vs->dwStringOffset) );
//Result:=PHandle(LpStr(xVarString)[xVarString.dwStringOffset])^;
GetMem(xValue,xVarString^.dwStringSize);
Move( pChar(xVarString)[xVarString^.dwStringOffset],xValue^,xVarString^.dwStringSize); //xVarString^.dwStringOffset
Result:=dWord(xValue^);
ShowInfo('设备号:'+Inttostr(Result)+' 编码类型:'+Inttostr(xVarString^.dwStringFormat) );
Finally
if Assigned(xValue) then FreeMem(xValue);
if Assigned(xVarString) then FreeMem(xVarString,nNeedSize);
End;
{ Inc(xVarString,xVarString^.dwStringOffset);
Result:=(pDWord(xVarString))^;
Dec(xVarString,xVarString^.dwStringOffset); }
{About Params named 'DeviceClass' of LineGetID:
If you want to play audio over the phone line, you should specify "wave/out";
if you want to record audio, use "wave/in".}