⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 TAPI (1.4 )控件的特性如下:打外线电话
💻 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 + -