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

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

?? callform.pas

?? TAPI 編程事例
?? PAS
字號:
unit Callform;
{
	*** TAPI Monitor ***
        by Davide Moretti <dave@rimini.com>

	This is a TAPI Test
	It uses TAPI interface to place outgoing calls.
	You can also monitor these calls with the Monitor...
}

interface

uses
	SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
	Forms, Dialogs, StdCtrls, Tapi, ExtCtrls;

type
	TfrmTAPICall = class(TForm)
    Label1: TLabel;
		Edit1: TEdit;
		btnCall: TButton;
    Memo1: TMemo;
		btnDropCall: TButton;
    grpMode: TRadioGroup;
		procedure FormCreate(Sender: TObject);
		procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnCallClick(Sender: TObject);
    procedure btnDropCallClick(Sender: TObject);
    procedure grpModeClick(Sender: TObject);
	private
		{ Private declarations }
		lineApp: THLineApp;// TAPI應用句柄
		line: THLine; //線路句柄
		call: THCall; // 呼叫句柄
		CallParams: TlineCallParams;//呼叫參數
	public
		{ Public declarations }
	end;

var
	frmTAPICall: TfrmTAPICall;

implementation

{$R *.DFM}

uses Main;

var
	buf:array[0..1023] of char;
	callinfo: TLineCallInfo absolute buf;
  {
    這兩個變量指向同一個地址
    而lineGetCallInfo函數需要一個TLineCallInfo類型的指針
	}

{
  TAPI回調函數,處理TAPI各類的消息。
  主要用于實現撥號  
}
procedure lineCallback(hDevice, dwMsg, dwCallbackInstance,
		dwParam1, dwParam2, dwParam3: LongInt);	stdcall;
	var
		s: string;
		hCall: THCall;
    
	begin

  { LineMakeCall調用的結果 }
	if dwMsg = LINE_REPLY then
		if dwParam2 < 0 then
			frmTAPICall.Memo1.Lines.Add('Reply error')
		else
			frmTAPICall.Memo1.Lines.Add('LINE_REPLY ok')
      
  { 線路狀態發生了改變 }
	else if dwMsg = LINE_CALLSTATE then
		begin
		hCall := THCall(hDevice);
		case dwParam1 of
    
      { 呼叫無效 }
			LINECALLSTATE_IDLE:
				if hcall <> 0 then
					begin
					lineDeallocateCall(hCall);	// 釋放呼叫句柄 
					frmTAPICall.Memo1.Lines.Add('Idle - call deallocated');
					frmTAPICall.btnCall.Enabled := True;
					frmTAPICall.btnDropCall.Enabled := False;
					end;

      { 呼叫建立成功 }
			LINECALLSTATE_CONNECTED:
				if hCall <> 0 then
					begin
					s := 'Connected: ';
					callinfo.dwTotalSize := 1024;
					if lineGetCallInfo(hCall, callinfo) = 0 then
						if callinfo.dwAppNameSize > 0 then
							s := s + (buf + callinfo.dwAppNameOffset); 
					frmTAPICall.Memo1.Lines.Add(s);
					end;

      { 呼叫處理過程中  }
			LINECALLSTATE_PROCEEDING:
				frmTAPICall.Memo1.Lines.Add('Proceeding');
      { 呼叫撥號過程中  }             
			LINECALLSTATE_DIALING:
				frmTAPICall.Memo1.Lines.Add('Dialing');
      { 呼叫遠端掛起  }             
			LINECALLSTATE_DISCONNECTED:	
				begin
				s := 'Disconnected: ';
				if dwParam2 = LINEDISCONNECTMODE_NORMAL then
					s := s + 'normal'
				else if dwParam2 = LINEDISCONNECTMODE_BUSY then
					s := s + 'busy';
				frmTAPICall.Memo1.Lines.Add(s);
				frmTAPICall.btnDropCall.Click;
				end;        
      { 接收到忙音 }
			LINECALLSTATE_BUSY:
				frmTAPICall.Memo1.Lines.Add('Busy');
			end;
		end;
	end;

//窗體建立時,初始化TAPI  
procedure TfrmTAPICall.FormCreate(Sender: TObject);
	var
		nDevs, tapiVersion: Longint;
		extid: TLineExtensionID;
	begin

	{ 清空并設置CallParams結構 }
	FillChar(CallParams, sizeof(CallParams), 0);
  with CallParams do
		begin
		dwTotalSize := sizeof(CallParams);
		dwBearerMode := LINEBEARERMODE_VOICE;
		dwMediaMode := LINEMEDIAMODE_INTERACTIVEVOICE;
		end;

	{ 初始化TAPI }    
	if lineInitialize(lineApp, HInstance,
			lineCallback, nil, nDevs) < 0 then		{ < 0 是錯誤的 }
		lineApp := 0

  { 如果沒有設備則釋放線路設備 }
	else if nDevs = 0 then
		begin
		lineShutDown(lineApp);
		lineApp := 0;
		end

  {檢查TAPI的版本號}    
	else if lineNegotiateAPIVersion(lineApp, 0, $00010000, $10000000,
			tapiVersion, extid) < 0 then
		begin
		lineShutDown(lineApp);
		lineApp := 0;
		end

	{ 打開線路,得到由Windows返回的線路設備句柄,通常是Modem }
  { 指定參數dwPrivileges為LINECALLPRIVILEGE_NONE,可被監控 }
	else if lineOpen(lineApp, LINEMAPPER, line, tapiVersion, 0, 0,
			LINECALLPRIVILEGE_NONE, 0, @CallParams) < 0 then
		begin
		lineShutDown(lineApp);
		lineApp := 0;
		line := 0;
		end;
	if line = 0 then
		Memo1.Lines.Add('Error!!');
	end;

procedure TfrmTAPICall.FormDestroy(Sender: TObject);
	begin
	{ 終止TAPI,釋放當前窗體,推出程序后才執行 }
	if line <> 0 then
		lineClose(line);
	if lineApp <> 0 then
		lineShutDown(lineApp);
	frmMain.Call := False;
	end;

  { 關閉窗體}  
procedure TfrmTAPICall.FormClose(Sender: TObject;
		var Action: TCloseAction);
	begin
	Action := caFree;
	end;

//對輸入的電話號碼進行撥號
procedure TfrmTAPICall.btnCallClick(Sender: TObject);
	var
		c: array[0..30] of char;
	begin
	if Length(Edit1.Text) > 0 then
		begin
		Memo1.Lines.Clear;
		StrPCopy(c, Edit1.Text);
		if lineMakeCall(line, call, c, 0, @CallParams) < 0 then
			Memo1.Lines.Add('Error in lineMakeCall')
		else
			begin
			btnCall.Enabled := False;
			btnDropCall.Enabled := True;
			end;
		end;
	end;

//掛調當前呼叫
procedure TfrmTAPICall.btnDropCallClick(Sender: TObject);
	begin
	if LineDrop(call, nil, 0) < 0 then
		Memo1.Lines.Add('Error in lineDrop')
	end;

//設定呼叫的類型  
procedure TfrmTAPICall.grpModeClick(Sender: TObject);
	begin
	if grpMode.ItemIndex = 0 then
    //交互語音呼叫
		CallParams.dwMediaMode := LINEMEDIAMODE_INTERACTIVEVOICE
	else
    //數據modem呼叫
		CallParams.dwMediaMode := LINEMEDIAMODE_DATAMODEM;
	end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区老鸭窝| 精品一区二区三区久久久| av亚洲精华国产精华| 国产视频一区在线观看| 国产suv精品一区二区三区| 国产精品视频在线看| 成人高清伦理免费影院在线观看| 国产欧美一区视频| 92国产精品观看| 一区二区三区高清在线| 日本韩国视频一区二区| 婷婷六月综合亚洲| 欧美成人性战久久| 国产激情一区二区三区| ●精品国产综合乱码久久久久| 欧美午夜精品一区二区三区| 亚洲成人激情av| 精品国产sm最大网站免费看| 国产美女在线观看一区| 成人免费在线播放视频| 欧美人伦禁忌dvd放荡欲情| 久久精品国产77777蜜臀| 国产色婷婷亚洲99精品小说| av在线这里只有精品| 亚洲www啪成人一区二区麻豆| 日韩午夜激情视频| 成人精品免费看| 日韩国产欧美三级| 国产女主播一区| 欧美麻豆精品久久久久久| 久久国产福利国产秒拍| 99re6这里只有精品视频在线观看| 三级不卡在线观看| 91美女福利视频| 天天综合日日夜夜精品| 综合亚洲深深色噜噜狠狠网站| 亚洲素人一区二区| 国产欧美中文在线| 国产人妖乱国产精品人妖| 精品国偷自产国产一区| 精品精品国产高清一毛片一天堂| 日韩美女一区二区三区| 精品久久五月天| 精品国产青草久久久久福利| 欧美xxxx老人做受| 精品国产一区二区三区av性色| 日韩欧美成人一区| 久久中文娱乐网| 国产日韩欧美制服另类| 国产精品午夜在线观看| 中文字幕一区日韩精品欧美| 国产精品乱人伦中文| 亚洲视频一二三| 一区二区三区在线观看动漫| 亚洲成av人片| 久久爱www久久做| 国产99久久久国产精品潘金网站| 成人av影院在线| 欧洲国产伦久久久久久久| 欧美日韩色综合| 日韩女同互慰一区二区| 欧美激情一区二区三区全黄| 一区二区中文字幕在线| 亚洲国产中文字幕| 久久国产尿小便嘘嘘| 国产精品77777竹菊影视小说| 国产99久久久久| 欧美在线播放高清精品| 91精品久久久久久久久99蜜臂| 欧美va亚洲va国产综合| 国产精品美女久久久久久久网站| 亚洲精品五月天| 久久精品av麻豆的观看方式| 成人激情黄色小说| 欧美熟乱第一页| 久久亚洲影视婷婷| 亚洲精品伦理在线| 麻豆精品在线观看| av电影在线观看完整版一区二区| 欧美三级日本三级少妇99| 欧美大片顶级少妇| 中文字幕日韩av资源站| 日日夜夜一区二区| 成人精品国产免费网站| 5566中文字幕一区二区电影| 日本一区二区三区久久久久久久久不| 亚洲精品乱码久久久久久 | 国产三级欧美三级日产三级99 | 午夜精品成人在线视频| 国产精品一区二区久激情瑜伽| 在线一区二区三区| 精品国产第一区二区三区观看体验| 亚洲欧洲国产日韩| 国产一区美女在线| 欧美性猛交xxxxxxxx| 久久免费午夜影院| 日韩中文字幕麻豆| 91香蕉视频黄| 久久女同精品一区二区| 香蕉成人啪国产精品视频综合网 | 亚洲三级理论片| 国产一区二区三区免费观看| 91美女在线观看| 亚洲精品一区二区三区影院 | 日韩免费福利电影在线观看| 亚洲欧美aⅴ...| 国产福利精品导航| 日韩午夜精品电影| 午夜精品久久久久久久99樱桃| 成人国产精品免费网站| 日韩精品一区二区三区四区视频| 一区二区三区四区在线免费观看| 国产盗摄精品一区二区三区在线| 欧美一区二区性放荡片| 一区二区三区**美女毛片| caoporn国产一区二区| 久久久久久久综合日本| 免费成人在线视频观看| 欧美日韩国产综合视频在线观看| 亚洲色欲色欲www| 成人毛片在线观看| 国产欧美一二三区| 国产精品影视网| 久久久亚洲国产美女国产盗摄| 久久精品国内一区二区三区| 欧美日韩www| 午夜免费久久看| 欧美亚洲动漫另类| 亚洲午夜私人影院| 在线观看日韩毛片| 亚洲一区二区三区三| 色综合天天综合网天天看片| 国产精品久久久久久亚洲伦| 国产成人精品亚洲日本在线桃色| 久久网这里都是精品| 极品少妇xxxx精品少妇| 久久久久久久久99精品| 国产精品18久久久| 欧美激情艳妇裸体舞| 成人国产在线观看| 亚洲三级在线观看| 色婷婷国产精品综合在线观看| 亚洲另类在线制服丝袜| 欧美亚洲一区二区在线| 午夜精品久久久久久久久久| 日韩一区二区三区视频在线| 另类小说欧美激情| 国产目拍亚洲精品99久久精品| 国产激情一区二区三区| 亚洲欧洲在线观看av| 色噜噜狠狠成人网p站| 亚洲福利电影网| 欧美一区二区三区免费观看视频 | 欧美日韩国产一二三| 奇米一区二区三区| 久久这里只有精品6| 国产 欧美在线| 国产精品进线69影院| 日本高清无吗v一区| 偷拍与自拍一区| 精品国产一区二区三区不卡| 成人午夜视频免费看| 亚洲欧美日韩久久| 4438x成人网最大色成网站| 久久99久国产精品黄毛片色诱| 久久精品男人天堂av| 91网页版在线| 日韩激情一二三区| 久久午夜羞羞影院免费观看| 91一区二区三区在线播放| 五月婷婷激情综合网| 久久久久国产精品人| 色悠久久久久综合欧美99| 日韩专区中文字幕一区二区| 久久久电影一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 午夜视频一区在线观看| 久久精品在这里| 欧美三级日韩三级| 国产99久久久国产精品潘金| 亚洲第一搞黄网站| 久久久蜜臀国产一区二区| av欧美精品.com| 麻豆精品在线观看| 亚洲精品国产无套在线观| 精品少妇一区二区三区日产乱码 | 日韩理论片中文av| 欧美v国产在线一区二区三区| 国产九色sp调教91| 一区二区三区国产精华| 亚洲精品一区二区三区福利| 在线观看成人小视频| 国产一区二区三区综合| 亚洲一卡二卡三卡四卡无卡久久| 久久蜜桃av一区精品变态类天堂| 欧美视频日韩视频| 成人免费看片app下载| 裸体在线国模精品偷拍| 一区二区三区小说| 国产精品久久久一本精品|