亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unitmain.pas

?? 自動語音應答系統
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit UnitMain;

interface

uses
  WinTypes,shellapi,
  WinProcs,
  Messages,
  SysUtils,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  ExtCtrls,registry,
  Menus,AdTapi,
  AdTutil,
  AdPort, OoMisc,AdTSel_My, AdTStat,MMHook, MMDesign,
  MMObj, MMACMDlg, MMDSPObj, MMWave, MMCstDlg;

const
  CurrentState : Integer = 0;
  StateGreeting          = 0;
  StateRecording         = 1;  
  StateIdle              = 2;
  StateBeeping           = 3;
  StatePlayback          = 4;
  StateDial              = 5;
  StateDialing           = 6;
  StateAnswer            = 7;
type
  TFormMain = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    CallerID: TEdit;
    CallerIDName: TEdit;
    Button1: TButton;
    CancelCall: TButton;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    MaxLengthEdit: TEdit;
    Monitor: TCheckBox;
    ApdComPort1: TApdComPort;
    Button2: TButton;
    Label6: TLabel;
    Button4: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Edit2: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    OpenDialog2: TOpenDialog;
    Edit3: TEdit;
    Button5: TButton;
    Label9: TLabel;
    Edit4: TEdit;
    Button6: TButton;
    Button7: TButton;
    Label3: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    ApdTapiDevice1: TApdTapiDevice;
    Timer1: TTimer;
    Button3: TButton;
    Label12: TLabel;
    Edit5: TEdit;
    Button8: TButton;
    Button9: TButton;
    ComboBox1: TComboBox;
    Button10: TButton;
    Label13: TLabel;
    Button11: TButton;
    ComboBox2: TComboBox;
    OpenDialog3: TOpenDialog;
    MMACM1: TMMACM;
    MMDesigner1: TMMDesigner;
    MMWaveFile1: TMMWaveFile;
    MMWaveOpenDialog1: TMMWaveOpenDialog;
    ApdTapiLog1: TApdTapiLog;
    Label14: TLabel;
    procedure CvtProgressCB(Sender: TObject; CurByte, NumBytes: Longint;
         Var Cancel: Boolean);
    procedure ConvertPCM;
    procedure ConvertACM;    
    procedure Button1Click(Sender: TObject);
    procedure CancelCallClick(Sender: TObject);
    procedure ApdTapiDevice1TapiConnect(Sender: TObject);
    procedure ApdTapiDevice1TapiWaveNotify(CP: TObject; Msg: TWaveMessage);
    procedure ApdTapiDevice1TapiCallerID(CP: TObject; ID, IDName: String);
    procedure MaxLengthEditExit(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ApdTapiDevice1TapiFail(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ApdTapiDevice1TapiDTMF(CP: TObject; Digit: Char;
      ErrorCode: Integer);
    procedure CheckBox2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure MonitorClick(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure Label10Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ApdTapiDevice1TapiStatus(CP: TObject; First, Last: Boolean;
      Device, Message, Param1, Param2, Param3: Cardinal);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure CallerIDChange(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Edit5Exit(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure ApdTapiDevice1TapiWaveSilence(CP: TObject; var StopRecording,
      Hangup: Boolean);
    procedure ApdTapiDevice1TapiWaveRingback(CP: TObject;
      var RingbackTimes: Integer; var StopRecording, Hangup: Boolean);
    procedure ApdTapiDevice1TapiWaveBusy(CP: TObject; var StopRecording,
      Hangup: Boolean);
    procedure ComboBox2Exit(Sender: TObject);
    procedure ComboBox1Exit(Sender: TObject);
  private
    { Private declarations }
    FileName : String;
    regpath:string;
    files:integer;
    caller:boolean;
    Timer1Busy:boolean;
  public
    WaveFileDir : String;
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

uses UnitFmtDialog,UnitPlay, UnitCvtProgress, UnitPhoneBook;

{$R *.DFM}

procedure wait(msec:dword);
var
   t:DWORD;
begin
   t:=gettickcount;
   while gettickcount-t<msec do application.ProcessMessages;
end;

procedure TFormMain.Button1Click(Sender: TObject);
begin 
  SelectDevice_My(ApdTapiDevice1,true,regpath);
  ApdTapiDevice1.EnableVoice := True;
end;

procedure TFormMain.CancelCallClick(Sender: TObject);
begin 
      if not ApdTapiDevice1.Cancelled then
      try
        if ApdTapiDevice1.WaveState = wsRecording then
           ApdTapiDevice1.StopWaveRecord;
        ApdTapiDevice1.OnTapiFail:=nil;
        ApdTapiDevice1.CancelCall;
      finally
        while ApdTapiDevice1.TapiState <> tsIdle do  Application.ProcessMessages;
        wait(1000); //等1秒
        ApdTapiDevice1.OnTapiFail:=ApdTapiDevice1TapiFail;
      end;
      Label4.Caption := '已經斷開...';
      Button2.Enabled:=true;
      Button7.Enabled:=true;
      Button10.Enabled:=CheckBox2.checked;
      timer1.enabled:=true; 
end;

procedure TFormMain.ApdTapiDevice1TapiConnect(Sender: TObject);
begin  
  if CurrentState = StateDial then 
  begin
     Label4.Caption := '正在拔打...';
     CurrentState := StateDialing;   
     ApdTapiDevice1.PlayWaveFile(WaveFileDir+'靜音.wav');
  end
  else begin 
     CurrentState := StateGreeting;  
     Label4.Caption := '播放問候語...';
     combobox1.text:=trim(combobox1.text);
     if combobox1.text<>'' then
     try
        ApdTapiDevice1.PlayWaveFile(combobox1.text);
     except
     end;
  end;
end;

procedure TFormMain.ApdTapiDevice1TapiWaveNotify(CP: TObject;
  Msg: TWaveMessage);
var
  datetime : TDateTime;
  year,month,day,hour,min,sec,msec : word;
  max : integer;
  sr : TSearchRec;
begin
  if (CurrentState = StateDialing)or(CurrentState = StateDial) then
  begin
    case Msg of
    waPlayClose : 
       begin
          ApdTapiDevice1.MaxMessageLength :=60*60; 
          ApdTapiDevice1.StartWaveRecord; 
       end;
    waDataReady: 
       begin
         datetime:=now;
         decodedate(datetime,year,month,day);
         decodetime(datetime,hour,min,sec,msec);
         if callerid.text=',' then
            FileName := WaveFileDir+Format('%.2d-%.2d-%.2d %.2d:%.2d:%.2d',[year,month,day,hour,min,sec])+'錄音.wav'
         else FileName := WaveFileDir+Format('%.2d-%.2d-%.2d %.2d:%.2d:%.2d',[year,month,day,hour,min,sec])+'拔打'+callerid.text+'.wav';
         ApdTapiDevice1.SaveWaveFile(FileName, True); 
       end;
    waRecordClose :  
       begin
          CancelCallClick(Self);  
          if findfirst(FileName,faAnyfile and not faDirectory,sr)=0 then 
          begin
             if (sr.Size<=110*1024)or  
                (pos('回鈴音......',Label14.caption)=1) then 
               deletefile(FileName)
             else begin
                inc(files); 
                Button9.caption:=inttostr(files)+'個錄音';
             end;
          end;
       end;
    end;
  end
  else begin
    case Msg of
    waPlayClose :
      case CurrentState of
      StateGreeting :
          begin
            CurrentState := StateBeeping;
            try
               ApdTapiDevice1.PlayWaveFile(WaveFileDir+'beep.wav');
            except
            end;
          end;
      StateBeeping : 
          begin
            CurrentState := StateRecording; 
            if CheckBox1.Checked then max:=strtointdef(MaxLengthEdit.Text,60*60)
            else max:=60*60;
            ApdTapiDevice1.MaxMessageLength :=max;
            Label4.Caption := '記錄拔入的電話...';
            try
               ApdTapiDevice1.StartWaveRecord;
            except
            end;
          end;
      end;
    waDataReady : 
      begin
        datetime:=now;
        decodedate(datetime,year,month,day);
        decodetime(datetime,hour,min,sec,msec);
        if not caller then callerid.text:='';
        FileName := WaveFileDir+Format('%.2d-%.2d-%.2d %.2d:%.2d:%.2d',[year,month,day,hour,min,sec])
           +'接聽'+callerid.text+'.wav';
        ApdTapiDevice1.SaveWaveFile(FileName, True); 
      end;
    waRecordClose : 
       begin
          CancelCallClick(Self); 
          inc(files); 
          Button9.caption:=inttostr(files)+'個錄音';
       end;
    end;
  end;
end;

procedure TFormMain.ApdTapiDevice1TapiCallerID(CP: TObject; ID,
  IDName: String);
begin
  CallerId.Text := ID;
  CallerIdName.Text := IDName;
  Caller:=true;
end;

procedure TFormMain.MaxLengthEditExit(Sender: TObject);
var
   reg:tregistry;
begin  
   reg:=Tregistry.create;
   reg.rootkey:=HKEY_LOCAL_MACHINE;
   reg.openkey(regpath,true);
   reg.writestring('AnswerRecordTime',MaxLengthEdit.text);
   reg.closekey;
   reg.free;
end;

procedure TFormMain.Button2Click(Sender: TObject);
begin
   Label14.caption:='';
   if not ApdTapiDevice1.EnableVoice then
   begin
      MessageDlg('沒有選擇正確的貓.', mtInformation, [mbOk], 0);
      exit;
   end;
   callerid.text:=trim(callerid.text);
   if callerid.text<>'' then
   begin
      try
         ApdTapiDevice1.OnTapiFail:=nil;
         ApdTapiDevice1.CancelCall;
      finally
         while ApdTapiDevice1.TapiState <> tsIdle do  Application.ProcessMessages;
         wait(1000); //等1秒
         ApdTapiDevice1.OnTapiFail:=ApdTapiDevice1TapiFail;
      end;
      Button2.Enabled:=false;
      Button7.Enabled:=false;
      Button10.Enabled:=false;
      Label4.Caption := '正在拔出...';
      CurrentState := StateDial;
      ApdTapiDevice1.Dial(callerid.text); 
   end
   else MessageDlg('請輸入電話號碼.', mtInformation, [mbOk], 0);
end;

procedure TFormMain.CheckBox1Click(Sender: TObject);
var
   reg:tregistry;
begin  
   MaxLengthEdit.Enabled:=CheckBox1.Checked;
   reg:=Tregistry.create;
   reg.rootkey:=HKEY_LOCAL_MACHINE;
   reg.openkey(regpath,true);
   if CheckBox1.Checked then reg.writeinteger('AnswerRecord',1)
   else reg.writeinteger('AnswerRecord',0);
   reg.closekey;
   reg.free;
end;

procedure TFormMain.ApdTapiDevice1TapiFail(Sender: TObject);
begin  
  CurrentState := StateIdle;
  Label4.Caption := '已經斷開...';
  Button2.Enabled:=true;
  Button7.Enabled:=true;
  Button10.Enabled:=CheckBox2.checked;
  if CurrentState = StateAnswer then CheckBox2.checked:=false
  else timer1.enabled:=true;  
end;

procedure TFormMain.ConvertPCM;
begin 
      FmtDialog.Wave := MMWaveFile1.Wave;
      if (FmtDialog.ShowModal = mrOk) then
      begin
         try
            try
               with FormCvtProgress do
               begin
                  Gauge1.Progress := 0;
                  BringToFront;
                  Show;
               end;
               MMWaveFile1.Wave.OnProgress := CvtProgressCB;
               MMWaveFile1.Wave.ConvertFile(MMWaveOpenDialog1.FileName+'.wav', FmtDialog.PWaveFormat);

            finally
               FormCvtProgress.Close;
            end;
            MMWaveFile1.Wave.FreeWave;
            MMWaveFile1.Wave.FileName:=MMWaveOpenDialog1.FileName;            
            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);
         except
            MessageDlg('轉換錯誤!',mtError, [mbOk], 0);
         end;
      end;
      Refresh;
end;

{-- TMainForm ------------------------------------------------------------}
procedure TFormMain.ConvertACM;
begin  
      MMACM1.EnumFormats := efConvert;
      if MMACM1.ChooseFormat(MMWaveFile1.Wave.PWaveFormat,'選擇目標格式') then
      begin
         try
            with FormCvtProgress do
            begin
               Gauge1.Progress := 0;
               BringToFront;
               Show;
            end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品1024| 日韩欧美一区二区在线视频| 欧洲一区二区av| 在线播放国产精品二区一二区四区| 欧美一区二区日韩| 国产日韩欧美a| 亚洲主播在线播放| 精品一区二区在线免费观看| 99这里只有精品| 欧美日韩激情在线| 精品国产一二三| 亚洲成人免费看| 日日欢夜夜爽一区| 国内外成人在线视频| 99综合影院在线| 91精品欧美久久久久久动漫| 8x8x8国产精品| 亚洲精品综合在线| 麻豆精品一区二区av白丝在线| 成人ar影院免费观看视频| 欧美成人女星排名| 成人在线视频一区| 成人激情免费视频| 91麻豆精品国产| 亚洲欧洲精品一区二区三区不卡 | 亚洲国产欧美一区二区三区丁香婷| 免费av成人在线| av成人老司机| 日韩欧美中文字幕公布| 亚洲三级在线播放| 国内精品伊人久久久久av一坑| 91久久线看在观草草青青| 欧美精品一区二区三区蜜臀 | 欧美性色欧美a在线播放| 欧美xfplay| 亚洲 欧美综合在线网络| 99这里只有久久精品视频| 精品区一区二区| 午夜免费久久看| 99精品视频一区| 夜夜嗨av一区二区三区四季av| 激情伊人五月天久久综合| 欧美在线观看视频一区二区三区| 国产日韩欧美一区二区三区乱码 | 日韩一级黄色大片| 一区二区三区波多野结衣在线观看| 国产精品91一区二区| 欧美一级国产精品| 亚洲v精品v日韩v欧美v专区| 91免费在线视频观看| 欧美激情一区二区三区在线| 激情综合一区二区三区| 日韩一区二区三区免费观看| 亚洲高清视频在线| 91麻豆免费看片| 国产精品久久久久aaaa| 国产成人在线观看| 99久久久无码国产精品| 国产精品卡一卡二| 99精品久久99久久久久| 亚洲精品乱码久久久久久| 欧美日韩三级一区| 麻豆精品视频在线| 精品国偷自产国产一区| 国产一区二区导航在线播放| 国产视频视频一区| 97久久精品人人做人人爽| 1000精品久久久久久久久| 欧美无砖砖区免费| 久草这里只有精品视频| 国产精品久久二区二区| 在线观看成人小视频| 亚洲精选在线视频| 欧美本精品男人aⅴ天堂| av成人动漫在线观看| 亚洲乱码国产乱码精品精小说| 亚洲精品在线电影| 激情综合色综合久久| 久久色在线观看| 成人小视频免费观看| 天天综合色天天综合色h| 亚洲人成精品久久久久久| 亚洲精品大片www| 亚洲高清视频中文字幕| 国产不卡视频在线播放| 1区2区3区国产精品| 一本久久精品一区二区| 一区二区久久久久| 欧美亚洲日本国产| 首页国产欧美日韩丝袜| 欧美一级久久久| 国产盗摄一区二区三区| 中文字幕一区二区三区精华液| 色综合天天做天天爱| 亚洲二区在线视频| 精品福利av导航| 成人sese在线| 亚洲福利视频三区| 2020国产精品| 91丨九色丨国产丨porny| 午夜精品久久久久久久99樱桃| 欧美一区二区福利在线| 成人一区二区三区| 亚洲狠狠爱一区二区三区| 欧美一区二区播放| 丁香天五香天堂综合| 一区二区三区国产精华| 欧美xxxxx牲另类人与| av电影一区二区| 免费日本视频一区| 欧美经典一区二区| 欧美视频完全免费看| 加勒比av一区二区| 亚洲人成网站影音先锋播放| 91麻豆精品国产91久久久资源速度 | 综合欧美亚洲日本| 欧美另类videos死尸| 国产成人日日夜夜| 亚洲一二三区在线观看| 精品国产制服丝袜高跟| 成人动漫一区二区在线| 日韩精品亚洲一区| 国产精品久久久久影视| 欧美美女一区二区| 国产成人精品免费| 日韩高清一级片| 国产精品毛片无遮挡高清| 日韩一二三区视频| 91美女福利视频| 国产精品一区免费在线观看| 亚洲国产一区视频| 天堂在线一区二区| 国产精品伦理在线| 欧美成人午夜电影| 欧美日韩亚洲综合在线| 成人av在线播放网站| 美国欧美日韩国产在线播放| 亚洲精选视频在线| 国产欧美1区2区3区| 日韩久久久久久| 欧洲精品一区二区| av一二三不卡影片| 国产一区在线精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 一区二区三区四区av| 国产免费观看久久| 26uuu精品一区二区| 91精选在线观看| 欧美三电影在线| 91视频免费观看| 国产成人av一区二区三区在线| 日韩激情视频网站| 夜夜揉揉日日人人青青一国产精品 | 亚洲第四色夜色| 成人性生交大片免费看中文 | 亚洲www啪成人一区二区麻豆| 国产一区在线精品| 69久久夜色精品国产69蝌蚪网| 国产精品国产三级国产普通话蜜臀 | 国产乱码精品一区二区三区五月婷 | 国产白丝网站精品污在线入口| 色欧美88888久久久久久影院| 免费在线成人网| 亚洲欧美国产毛片在线| 久久久久久久综合狠狠综合| 国产成人免费视频精品含羞草妖精 | 国产一区二区三区久久悠悠色av| 丝袜美腿成人在线| 亚洲国产一区视频| 一区二区久久久久| 一区二区三区国产豹纹内裤在线| 亚洲女人****多毛耸耸8| 中文字幕日本不卡| 亚洲国产成人自拍| 中文字幕一区免费在线观看| 麻豆成人久久精品二区三区小说| 欧美日本一道本| 日韩av成人高清| 欧美大肚乱孕交hd孕妇| 国产精品中文字幕一区二区三区| 日韩欧美不卡在线观看视频| 成人午夜精品在线| 国产精品丝袜一区| av亚洲精华国产精华| 亚洲欧美日韩一区二区三区在线观看| 成人高清视频在线| 亚洲视频在线观看一区| 欧美日韩在线观看一区二区| 色一情一伦一子一伦一区| 欧美四级电影网| 欧美一区二区三区日韩| 日韩电影在线观看电影| 日本一区中文字幕| 激情综合一区二区三区| 懂色av一区二区三区免费观看| 粉嫩绯色av一区二区在线观看| 91最新地址在线播放| 91国在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 在线亚洲欧美专区二区|