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

📄 main.pas

📁 三汇CTI示例程序源码
💻 PAS
字号:
//demo程序实现了一下功能:
//  1。自动向外拨号功能。
//  2。未检测到F1信号时,做语音提示,延时后再发传真。
//  3。 寻找一空闲软传真通道向外发传真。
//  4。对传真发送全过程进行录音,日志显示。

unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls;

type
  TMainForm = class(TForm)
    TrunkChListView: TListView;
    Timer1: TTimer;
    Edit2: TEdit;
    Label1: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Button2: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Label2: TLabel;
    Label5: TLabel;
    Button3: TButton;
    Button4: TButton;
    Panel1: TPanel;
    ListBox3: TListBox;
    Edit1: TEdit;
    Label7: TLabel;
    Edit5: TEdit;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Label8: TLabel;
    Edit6: TEdit;
    Button9: TButton;
    Label6: TLabel;
    Label9: TLabel;
    CheckBox1: TCheckBox;
    Label10: TLabel;
    Label11: TLabel;
    Edit7: TEdit;
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;
  bHaveLoadDriver:boolean;
implementation

uses FaxFunc,Shpa3api,filectrl;

{$R *.DFM}
procedure TMainForm.FormShow(Sender: TObject);
var
    i:Integer;
    ListItem: TListItem;
begin
    bHaveLoadDriver:=InitCtiBoard();
    if not bHaveLoadDriver then Close()
    else
    begin
      for i:=0 to nTotalCh-1 do
      begin
          if( FAxCh[i].EnCalled ) then
          begin
            ListItem:=TrunkChListView.Items.Add;
            ListItem.Caption:=IntToStr(i);
            ListItem.SubItems.Add(' ');
            ListItem.SubItems.Add(' ');
            ListItem.SubItems.Add(' ');
            ListItem.SubItems.Add(' ');

          end;


      end;

      Timer1.Enabled:=true;
    end;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
    if bHaveLoadDriver then ExitCtiBoard();
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
    DrawTrunkChState();
    DoTruckWork();
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  Close();
end;

procedure TMainForm.Button2Click(Sender: TObject);
var
  ErrMsg:PChar;
  sPoneNumber:PCHAR;
begin
     if SsmPickUp(StrToInt(Edit2.Text))=-1then
     begin
       GetMem(ErrMsg,200);
       SsmGetLastErrMsg(ErrMsg);
       Application.MessageBox(ErrMsg,'错误', MB_OK) ;
       FreeMem(ErrMsg);
       exit;
     end;
     SsmRecToFile(StrToInt(Edit2.Text), 'record.wav', -1, 0, $ffffffff, $ffffffff, 1);
     SsmClearToneAnalyzeResult(StrToInt(Edit2.Text));

     TrunkCh[StrToInt(Edit2.Text)].InUse:=1;
     TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_PICK_UP;
     ListBox1.Items.Add('外线摘机');
     sPoneNumber:=Pchar(Edit3.Text);
     if SsmAutoDial(StrToInt(Edit2.Text),sPoneNumber)=-1 then
     begin
       GetMem(ErrMsg,200);
       SsmGetLastErrMsg(ErrMsg);
       Application.MessageBox(ErrMsg,'错误', MB_OK) ;
       FreeMem(ErrMsg);
       exit;
     end;

     TrunkCh[StrToInt(Edit2.Text)].InUse:=2;
     TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_DAIL;
     ListBox1.Items.Add('外线自动向外拨号');
end;

procedure TMainForm.Button3Click(Sender: TObject);
begin
        SsmFaxStop(TrunkCh[StrToInt(Edit2.Text)].nToFaxCh);
        SsmStopTalkWith(StrToInt(Edit2.Text),TrunkCh[StrToInt(Edit2.Text)].nToFaxCh);
        TrunkCh[StrToInt(Edit2.Text)].nStep:=TRUNK_WAIT_HANGUP;
        MainForm.ListBox1.Items.Add('***警告:用户停止传真发送***');
end;

procedure TMainForm.Button4Click(Sender: TObject);
var
  ErrMsg:PChar;
  sPoneNumber:PCHAR;
  nRet:integer;
begin


     nRet:=SsmGetChType(StrToInt(Edit2.Text));
     if(nRet=0)or(nRet=4)or(nRet=6)or(nRet=7)or(nRet=8)or(nRet=11)then
     begin
          TrunkCh[StrToInt(Edit2.Text)].sPhoneNum := Edit3.Text;
     end
     else begin
          Exit;
     end;
     if(not TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax)then
     begin
          TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax:=True;
          TrunkCh[StrToInt(Edit2.Text)].nTimeOut :=1*60*20;
          Button4.Caption:='停止循环传真发送';
     end
     else begin
          TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax:=False;
          TrunkCh[StrToInt(Edit2.Text)].nTimeOut :=0;
          Button4.Caption:='启动循环传真发送';
     end;

end;

procedure TMainForm.Edit2Change(Sender: TObject);
begin
         if(TrunkCh[StrToInt(Edit2.Text)].bCircleSendingFax)then
         begin
              Button4.Caption:='停止循环传真发送';
         end
         else begin
              Button4.Caption:='启动循环传真发送';
         end;
         if(TrunkCh[StrToInt(Edit2.Text)].sPhoneNum<>'')then
         begin
              Edit3.Text := TrunkCh[StrToInt(Edit2.Text)].sPhoneNum;
         end
         else begin
              Edit3.Text := '';
         end;
end;

procedure TMainForm.Button7Click(Sender: TObject);
begin
    if FileExists('PhoneCode.txt') then
    begin
        ListBox3.Items.LoadFromFile ('PhoneCode.txt');
        nTelCnt :=0;
    end
    else showmessage('文件PhoneCode.txt不存在');
end;

procedure TMainForm.Button5Click(Sender: TObject);
begin
if length(edit5.text)<>0 then
begin
      ListBox3.Items.Add(edit5.text);
      //nTelCnt :=0;
end;
    edit5.Text:='';
end;

procedure TMainForm.Button6Click(Sender: TObject);
begin
     ListBox3.Clear;
     nTelCnt :=0;
end;

procedure TMainForm.Button8Click(Sender: TObject);
var
   nRet:integer;
begin
     if ListBox3.Items.Count=0 then
     begin
          showmessage('号码列表为空,请添加号码!');
          exit;
     end;
     nRet:=SsmGetChType(StrToInt(Edit6.Text));
     if(nRet=0)or(nRet=4)or(nRet=6)or(nRet=7)or(nRet=8)or(nRet=11)then
     begin
          //TrunkCh[StrToInt(Edit6.Text)].sPhoneNum := Edit3.Text;
     end
     else begin
          Exit;
     end;
     if(not TrunkCh[StrToInt(Edit6.Text)].bMultSendFax)then
     begin
          TrunkCh[StrToInt(Edit6.Text)].bMultSendFax:=True;
          TrunkCh[StrToInt(Edit6.Text)].nTimeOut :=1*60*20;
          Button8.Caption:='停止匹发送传真';
     end
     else begin
          TrunkCh[StrToInt(Edit6.Text)].bMultSendFax:=False;
          TrunkCh[StrToInt(Edit6.Text)].nTimeOut :=0;
          Button8.Caption:='启动匹发送传真';
     end;
end;

procedure TMainForm.Edit6Change(Sender: TObject);
begin
          if(TrunkCh[StrToInt(Edit6.Text)].bMultSendFax)then
     begin
          Button8.Caption:='停止匹发送传真';
     end
     else begin
          Button8.Caption:='启动匹发送传真';
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -