📄 unitmain.pas
字号:
MMWaveFile1.Wave.OnProgress := CvtProgressCB;
MMACM1.ConvertFile(MMWaveOpenDialog1.FileName+'.wav');
finally
FormCvtProgress.Close;
end;
MMWaveFile1.Wave.FreeWave;
if fileexists(MMWaveOpenDialog1.FileName+'.wav') then
begin
renamefile(MMWaveOpenDialog1.FileName,MMWaveOpenDialog1.FileName+'.bak');
renamefile(MMWaveOpenDialog1.FileName+'.wav',MMWaveOpenDialog1.FileName);
MessageDlg('转换成功!原文件改名为.bak',mtInformation, [mbOk], 0);
end
else MessageDlg('转换错误!',mtInformation, [mbOk], 0);
end;
Refresh;
end;
procedure TFormMain.Button4Click(Sender: TObject);
begin
if MMWaveOpenDialog1.Execute then
begin
combobox1.text:=MMWaveOpenDialog1.FileName;
ComboBox1Change(Sender);
if MessageDlg('选择的wav文件必须是您的声卡所支持的格式,一般是16位8000赫单声PCM,需要转换吗?', mtInformation, [mbyes,mbno], 0)=mrno then exit;
MMWaveFile1.Wave.FileName:='';
MMWaveFile1.Wave.FileName:=MMWaveOpenDialog1.FileName;
if MMACM1.ACMPresent and (MMACM1.NumConverters > 0) then ConvertACM
else ConvertPCM;
end;
end;
procedure TFormMain.Button5Click(Sender: TObject);
begin
if OpenDialog2.Execute then
Edit3.text:=OpenDialog2.FileName;
end;
procedure TFormMain.ApdTapiDevice1TapiDTMF(CP: TObject; Digit: Char;
ErrorCode: Integer);
begin
if (Digit = '') or (Digit = ' ') then Exit;
case Digit of
'#': CancelCallClick(Self);
'1': WinExec(pchar(edit3.text),SW_SHOWNORMAL);
'2': WinExec(pchar(edit4.text),SW_SHOWNORMAL);
'3': WinExec(pchar(edit5.text),SW_SHOWNORMAL);
//'4':
//'5':
//'6':
//......
end;
end;
procedure TFormMain.CheckBox2Click(Sender: TObject);
var
reg:tregistry;
begin
Button10.Enabled:=CheckBox2.checked;
if CheckBox2.Checked then
begin
if not ApdTapiDevice1.EnableVoice then
begin
MessageDlg('没有选择正确的猫.', mtInformation, [mbOk], 0);
end
else begin
try
ApdTapiDevice1.OnTapiFail:=nil;
screen.Cursor:=crHourGlass;
Caller:=false;
CurrentState := StateAnswer;
ApdTapiDevice1.AutoAnswer;
Label4.Caption := '正在侦听...';
finally
screen.Cursor:=crDefault;
wait(1000); //等1秒
ApdTapiDevice1.OnTapiFail:=ApdTapiDevice1TapiFail;
end;
end;
end
else begin
try
ApdTapiDevice1.OnTapiFail:=nil;
ApdTapiDevice1.CancelCall;
Label4.Caption := '已经断开...';
finally
while ApdTapiDevice1.TapiState <> tsIdle do Application.ProcessMessages;
wait(1000); //等1秒
ApdTapiDevice1.OnTapiFail:=ApdTapiDevice1TapiFail;
end;
end;
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
if CheckBox2.Checked then reg.writeinteger('AutoAnswer',1)
else reg.writeinteger('AutoAnswer',0);
reg.closekey;
reg.free;
end;
procedure TFormMain.FormShow(Sender: TObject);
var
reg:tregistry;
begin
Timer1Busy:=false;
files:=0;
WaveFileDir := ExtractFilePath(ParamStr(0));
regpath:='software\www\telephone';
SelectDevice_My(ApdTapiDevice1,false,regpath);
ApdTapiDevice1.EnableVoice := True;
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
if (reg.valueexists('Speeker'))and(reg.readinteger('Speeker')=1)then Monitor.Checked:=true
else Monitor.Checked:=false;
if (reg.valueexists('AnswerRecord'))and(reg.readinteger('AnswerRecord')=1)then CheckBox1.Checked:=true
else CheckBox1.Checked:=false;
if (reg.valueexists('AnswerOnRing')) then edit2.text:=reg.readstring('AnswerOnRing');
if (reg.valueexists('AutoAnswer'))and(reg.readinteger('AutoAnswer')=1)then CheckBox2.Checked:=true
else CheckBox2.Checked:=false;
if (reg.valueexists('Greet')) then combobox1.text:=reg.readstring('Greet');
if (reg.valueexists('RingToRun')) then combobox2.text:=reg.readstring('RingToRun');
if (reg.valueexists('AnswerRecordTime')) then MaxLengthEdit.text:=reg.readstring('AnswerRecordTime');
if (reg.valueexists('CallerID')) then CallerID.text:=reg.readstring('CallerID');
if (reg.valueexists('1')) then edit3.text:=reg.readstring('1');
if (reg.valueexists('2')) then edit4.text:=reg.readstring('2');
if (reg.valueexists('3')) then edit5.text:=reg.readstring('3');
reg.closekey;
reg.free;
ApdTapiDevice1.MonitorRecording := Monitor.Checked;
CheckBox2Click(Sender);
end;
procedure TFormMain.Button7Click(Sender: TObject);
begin
callerid.text:=',';
Button2Click(Sender);
end;
procedure TFormMain.MonitorClick(Sender: TObject);
var
reg:tregistry;
begin
ApdTapiDevice1.MonitorRecording := Monitor.Checked;
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
if Monitor.Checked then reg.writeinteger('Speeker',1)
else reg.writeinteger('Speeker',0);
reg.closekey;
reg.free;
end;
procedure TFormMain.Label3Click(Sender: TObject);
begin
ShellExecute(handle,nil,pchar(label3.caption),nil,nil,sw_shownormal);
end;
procedure TFormMain.Label10Click(Sender: TObject);
begin
ShellExecute(handle,nil,pchar('mailto:'+label10.caption),nil,nil,sw_shownormal);
end;
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
if Timer1Busy then exit; //如果“正忙”,则退出
Timer1Busy:=true; //设置“正忙”
while ApdTapiDevice1.TapiState <> tsIdle do Application.ProcessMessages;
CurrentState := StateIdle;
CheckBox2Click(Sender);
Timer1Busy:=false; //取消“正忙”
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CancelCallClick(Sender);
ApdTapiDevice1.OnTapiFail:=Nil;
timer1.Enabled:=false;
end;
procedure TFormMain.ApdTapiDevice1TapiStatus(CP: TObject; First,
Last: Boolean; Device, Message, Param1, Param2, Param3: Cardinal);
var
s:string;
begin
if (Message=LINE_CALLSTATE)and(Param1=LINECALLSTATE_OFFERING)and(trim(ComboBox2.text)<>'') then
begin
label14.Caption:='铃音';
s:=lowercase(combobox2.text);
if (pos('.com ',s)<>0)or(pos('.com"',s)<>0)or
(pos('.exe ',s)<>0)or(pos('.exe"',s)<>0)then
WinExec(pchar(combobox2.text),SW_SHOWNORMAL)
else
ShellExecute(handle,nil,pchar(combobox2.text),nil,nil,sw_shownormal);
end;
end;
procedure TFormMain.Edit3Exit(Sender: TObject);
var
reg:tregistry;
begin
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('1',edit3.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.Edit4Exit(Sender: TObject);
var
reg:tregistry;
begin
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('2',edit4.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.Button3Click(Sender: TObject);
begin
FormPhoneBook.ShowModal;
if FormPhoneBook.Edit2.text<>'' then
begin
CallerID.text:=FormPhoneBook.Edit2.text;
end;
end;
procedure TFormMain.CallerIDChange(Sender: TObject);
var
reg:tregistry;
slist:TStringList;
i:integer;
begin
CallerID.text:=trim(CallerID.text);
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('CallerID',CallerID.text);
reg.closekey;
reg.free;
slist:=Tstringlist.create;
try
slist.LoadFromFile(WaveFileDir+'PhoneBook2.Dat');
i:=slist.IndexOf(CallerID.text);
if i<>-1 then
begin
slist.LoadFromFile(WaveFileDir+'PhoneBook1.Dat');
CallerIDName.text:=slist.strings[i];
end;
except
MessageDlg('电话号码薄错误.', mtInformation, [mbOk], 0);
end;
slist.free;
end;
procedure TFormMain.Button8Click(Sender: TObject);
begin
if OpenDialog2.Execute then
Edit5.text:=OpenDialog2.FileName;
end;
procedure TFormMain.Edit5Exit(Sender: TObject);
var
reg:tregistry;
begin
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('3',edit5.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.Button9Click(Sender: TObject);
begin
files:=0;
Button9.caption:=inttostr(files)+'个录音';
FormPlay.ShowModal;
end;
procedure TFormMain.Button6Click(Sender: TObject);
begin
if OpenDialog2.Execute then
Edit4.text:=OpenDialog2.FileName;
end;
procedure TFormMain.ComboBox1Change(Sender: TObject);
var
reg:tregistry;
begin
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('Greet',combobox1.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.Button10Click(Sender: TObject);
var
i:integer;
time:dword;
begin
Label14.caption:='';
Button2.Enabled:=false;
Button7.Enabled:=false;
Button10.Enabled:=false;
i:=ApdTapiDevice1.AnswerOnRing;
ApdTapiDevice1.AnswerOnRing:=1;
time:=gettickcount;
while gettickcount-time<3000 do application.ProcessMessages;
ApdTapiDevice1.AnswerOnRing:=i;
Button2.Enabled:=true;
Button7.Enabled:=true;
Button10.Enabled:=CheckBox2.checked;
end;
procedure TFormMain.Button11Click(Sender: TObject);
begin
if OpenDialog3.Execute then
begin
combobox2.text:=OpenDialog3.FileName;
ComboBox2Change(Sender);
end;
end;
procedure TFormMain.ComboBox2Change(Sender: TObject);
var
reg:tregistry;
begin
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('RingToRun',combobox2.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.Edit2Change(Sender: TObject);
var
reg:tregistry;
i:integer;
begin
i:=strtointdef(edit2.text,0);
if edit2.text<>inttostr(i) then edit2.text:=inttostr(i);
ApdTapiDevice1.AnswerOnRing:=i;
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey(regpath,true);
reg.writestring('AnswerOnRing',Edit2.text);
reg.closekey;
reg.free;
end;
procedure TFormMain.CvtProgressCB(Sender: TObject; CurByte, NumBytes: Longint;
Var Cancel: Boolean);
begin
with FormCvtProgress do
begin
Gauge1.Progress := Round((CurByte * 100.0) / NumBytes+0.5);
end;
Cancel := FormCvtProgress.Cancel;
end;
procedure TFormMain.ApdTapiDevice1TapiWaveSilence(CP: TObject;
var StopRecording, Hangup: Boolean);
begin
Label14.caption:='无音...';
end;
procedure TFormMain.ApdTapiDevice1TapiWaveBusy(CP: TObject;
var StopRecording, Hangup: Boolean);
begin
Label14.caption:='忙音或对方已挂机...';
end;
procedure TFormMain.ApdTapiDevice1TapiWaveRingback(CP: TObject;
var RingbackTimes: Integer; var StopRecording, Hangup: Boolean);
var
i:integer;
begin
Label14.caption:='回铃音';
for i:=1 to RingBackTimes do Label14.caption:=Label14.caption+'.';
if (RingbackTimes>=5) then
begin
StopRecording:=true;
Hangup:=true;
end
else if (RingbackTimes<=0) then
begin
Label14.caption:='';
end;
end;
procedure TFormMain.ComboBox2Exit(Sender: TObject);
begin
ComboBox2Change(Sender);
end;
procedure TFormMain.ComboBox1Exit(Sender: TObject);
begin
ComboBox1Change(Sender);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -