📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TAPI, Mask, Grids, MMSystem,
cGAcomTAPI, Buttons, ExtCtrls, MPlayer;
type
TfrmGAtapi = class(TForm)
cmbSelLine: TComboBox;
Memo1: TMemo;
GroupBox1: TGroupBox;
spbListen: TSpeedButton;
spbAccept: TSpeedButton;
spbReject: TSpeedButton;
spbRedirect: TSpeedButton;
cbAutoAccept: TCheckBox;
GroupBox2: TGroupBox;
cbPulseDial: TCheckBox;
spbDial: TSpeedButton;
spbEndListen: TSpeedButton;
btnHangup: TButton;
GroupBox3: TGroupBox;
cbAutoDTMF: TCheckBox;
btnHangup2: TButton;
btnMonitorDTMF: TButton;
spbPlayWave: TSpeedButton;
editWave2Play: TEdit;
spbRecordWave: TSpeedButton;
editWave2Record: TEdit;
spbStopPlayWave: TSpeedButton;
spbStopRecordWave: TSpeedButton;
btnStopMonitorDTMF: TButton;
GAcomTAPI1: TGAcomTAPI;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure cmbSelLineChange(Sender: TObject);
procedure spbDialClick(Sender: TObject);
procedure btnHangupClick(Sender: TObject);
procedure btnMonitorDTMFClick(Sender: TObject);
procedure cbPulseDialClick(Sender: TObject);
procedure spbListenClick(Sender: TObject);
procedure spbAcceptClick(Sender: TObject);
procedure spbRejectClick(Sender: TObject);
procedure spbRedirectClick(Sender: TObject);
procedure cbAutoAcceptClick(Sender: TObject);
procedure cbAutoDTMFClick(Sender: TObject);
procedure spbPlayWaveClick(Sender: TObject);
procedure spbStopPlayWaveClick(Sender: TObject);
procedure spbStopRecordWaveClick(Sender: TObject);
procedure spbRecordWaveClick(Sender: TObject);
procedure DTMF(Sender: TObject; DTMF: String);
procedure btnStopMonitorDTMFClick(Sender: TObject);
procedure StatusChanged(Sender: TObject; oldStatus, newStatus: TStatus);
procedure NewLog(Sender: TObject; s: String);
procedure Recorded(Sender: TObject; wave2Record: String);
procedure Offer(Sender: TObject; CallerAddr: String);
private
FpAddressCaps : LPLineAddressCaps;
FhLine: THLine;
procedure AddLine(s: String);
end;
var
frmGAtapi: TfrmGAtapi;
implementation
uses TAPIplay, TAPIrec;
{$R *.DFM}
procedure TfrmGAtapi.FormCreate(Sender: TObject);
begin
if GAcomTAPI1.Initialized
then begin
cmbSelLine.Items := GAcomTAPI1.CapableDevices;
cmbSelLine.ItemIndex := cmbSelLine.Items.Count-1;
end;
end;
procedure TfrmGAtapi.cmbSelLineChange(Sender: TObject);
begin
GAcomTAPI1.DeviceID := cmbSelLine.ItemIndex;
end;
procedure TfrmGAtapi.spbDialClick(Sender: TObject);
begin
if GAcomTAPI1.HasOpenLine
then begin
GAcomTAPI1.lineClose;
end;
if GAcomTAPI1.lineOpen
then GAcomTAPI1.LineMakeCall(Edit1.Text)
end;
procedure TfrmGAtapi.AddLine(s: String);
begin
if Assigned(Memo1)
then Memo1.Lines.Add(trim(s));
end;
procedure TfrmGAtapi.btnHangupClick(Sender: TObject);
begin
GAcomTAPI1.Hangup;
end;
procedure TfrmGAtapi.btnMonitorDTMFClick(Sender: TObject);
begin
GAcomTAPI1.DetectDTMF;
end;
procedure TfrmGAtapi.btnStopMonitorDTMFClick(Sender: TObject);
begin
GAcomTAPI1.EndDetectDTMF;
end;
procedure TfrmGAtapi.cbPulseDialClick(Sender: TObject);
begin
if cbPulseDial.Checked
then GAcomTAPI1.DialMode := dmPulse
else GAcomTAPI1.DialMode := dmTone;
end;
procedure TfrmGAtapi.spbListenClick(Sender: TObject);
begin
GAcomTAPI1.LineListen;
end;
procedure TfrmGAtapi.spbAcceptClick(Sender: TObject);
begin
GAcomTAPI1.AcceptCall;
end;
procedure TfrmGAtapi.spbRedirectClick(Sender: TObject);
begin
GAcomTAPI1.RedirectCall(Edit2.Text);
end;
procedure TfrmGAtapi.spbRejectClick(Sender: TObject);
begin
GAcomTAPI1.RejectCall;
end;
procedure TfrmGAtapi.cbAutoAcceptClick(Sender: TObject);
begin
if cbAutoAccept.Checked
then GAcomTAPI1.AutoAcceptMode := aaAfter1stRing
else GAcomTAPI1.AutoAcceptMode := aaDisabled
end;
procedure TfrmGAtapi.cbAutoDTMFClick(Sender: TObject);
begin
GAcomTAPI1.AutoDTMFDetect := cbAutoDTMF.Checked;
end;
procedure TfrmGAtapi.spbPlayWaveClick(Sender: TObject);
begin
GAcomTAPI1.LinePlayWave(editWave2Play.Text);
end;
procedure TfrmGAtapi.spbStopPlayWaveClick(Sender: TObject);
begin
GAcomTAPI1.LineStopPlayWave;
end;
procedure TfrmGAtapi.spbStopRecordWaveClick(Sender: TObject);
begin
GAcomTAPI1.LineStopRecordWave;
end;
procedure TfrmGAtapi.spbRecordWaveClick(Sender: TObject);
begin
GAcomTAPI1.LineRecordWave(editWave2Record.Text);
end;
procedure TfrmGAtapi.DTMF(Sender: TObject; DTMF: String);
begin
frmGAtapi.Caption := frmGAtapi.Caption + DTMF;
end;
procedure TfrmGAtapi.StatusChanged(Sender: TObject; oldStatus, newStatus: TStatus);
begin
spbListen.Enabled := newStatus = stStandBy;
spbEndListen.Enabled := newStatus = stListening;
spbAccept.Enabled := newStatus = stOffering;
spbReject.Enabled := spbAccept.Enabled;
spbRedirect.Enabled := spbAccept.Enabled;
spbDial.Enabled := newStatus = stStandBy;
btnHangup.Enabled := newStatus in [stWaitingDialTone, stDialing, stDialed];
btnMonitorDTMF.Enabled := NOT GAcomTAPI1.DetectingDTMF;
btnStopMonitorDTMF.Enabled := GAcomTAPI1.DetectingDTMF;
spbPlayWave.Enabled := (newStatus = stConnected);
spbRecordWave.Enabled := (newStatus = stConnected);
spbStopPlayWave.Enabled := (newStatus = stPlaying);
spbStopRecordWave.Enabled := (newStatus = stRecording);
//btnHangup2.Enabled := GAcomTAPI1.HasOpenLine; //ga: hard hangup
btnHangup2.Enabled := (newStatus = stConnected);
AddLine('= = = ' + GAcomTAPI1.GetStatus + #13#10);
end;
procedure TfrmGAtapi.NewLog(Sender: TObject; s: String);
begin
AddLine(s);
end;
procedure TfrmGAtapi.Recorded(Sender: TObject; wave2Record: String);
begin
GAcomTAPI1.Hangup;
GAcomTAPI1.LineListen;
end;
procedure TfrmGAtapi.Offer(Sender: TObject; CallerAddr: String);
begin
AddLine(CallerAddr + ' is calling');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -