📄 djcccx.pas
字号:
unit DjCCCx;
interface
uses
SysUtils, Classes,idTcpClient,DjBase,DjCBase,Controls,uSeatThread,windows
,Messages,Forms,unitHsMessagePub;
{
咱闻那西天佛祖,也不过要黄金铺地;阴司十殿,也要些楮镪营求。咱只消尽这家私广为善事,就使强奸了嫦娥,和奸了织女,拐了许飞琼,盗了西王母的女儿,也不减我泼天富贵!
上邪,我欲与君相知,长命无绝衰。山无陵,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝!
青青河畔草,郁郁园中柳。盈盈楼上女,皎皎当窗牖。娥娥红粉妆,纤纤出素手。昔为倡家女,今为荡子妇。荡子行不归,空床难独守。
《乘兴走笔》总第732期晓薇的博客专辑
衣香鬓影,宛若当年
告别清水无尘的文字,已经太久。不在夜晚的风口伫足回眸,也已经太久。浸在活色生香的日子里,每每不敢回首,害怕一些烟火气,将往昔笼罩,改变了原来的颜色。
今夜微风轻轻吹,没有朗月清照,净手洁面,轻轻回望那年五月,知遇的季节。灯火通明,照亮一袭青衣和红红的裙裾,那一刻,有着梦幻般表情的女子怎会想到,一场盛夏的热烈注定要深入她的内心乃至骨髓,驱散她生命的荒凉。
不舍得常常回忆。只在洗尽铅华的某一刻,打开雕花漆盒,梦幻般的表情重现,一点一滴的细节,只如夜风,吹开山间溪边的那一簇蔷薇。星星点点的馨香,恍若人间最美好的牵挂,君心未改,红颜不老。
人世所有的热闹,不过是一场虚无的盛宴。我们好好地上演着我们的世俗,尽力尽责,华丽或朴素地活着,那是上帝分派给我们的任务。而在内心,总有另一番庄严,是对知己的尊重与感激。
夜风泠泠,环佩空归。无语的人生并非一个苍凉的手势。临镜照花,衣香鬓影,宛若当年。
}
type
TDjExceptionEvent = procedure(Sender:TObject;ErrorCode:integer;AException:Exception) of object;
TLoginEvent = procedure(Sender:TObject;LoginResult:Integer) of object;
TOnDialInEvent = procedure(Sender:TObject;CallType,ChnlID:word;CallerPhone,ReceiverPhone:string) of object;
//用户自定义事件
TUserDefEvent = procedure(Sender:TObject;EventNum:word;EventStr:array of char) of object;
//TLoginResult =();
TOnOtherHangEvent = procedure(Sender:TObject;OtherPhone:String) of object;
TOnKeepEvent = procedure(Sender:TObject;KeepResult:integer) of object;
TOnGetKeepEvent = procedure(Sender:TObject;ChnlID:integer;KeepResult:integer) of object;
TOnRecordEvent = procedure(Sender:TObject;FileName:string) of object;
TDjCCCx = class(TDjCBase)
private
{ Private declarations }
FWindowHandle: HWND;
idTcpClient : TIdTCPClient ;
FConnect :Boolean ;
FHost : string;
FPort : integer;
ClientThread :TClentThread ;
FOnConnect :TNotifyEvent ; //连接成功
FOnDisConnect :TNotifyEvent; //断开连接
FOnException :TDjExceptionEvent ; //组件内部异常
FAfterLogin :TLoginEvent; //注册后处理
FOnLoginOff:TLoginEvent; //注销后处理
FOnDialIn :TOnDialInEvent ; //来电
FOnLink :TNotifyEvent ; //接通来电
FOnHook :TNotifyEvent; //摘机
FOffHook :TNotifyEvent; //挂机
FOnCallSucess:TNotifyEvent; //呼叫成功
FOnCallFail :TNotifyEvent; //呼叫失败
FOnOtherHang :TOnOtherHangEvent; //对方挂机
FOnUserDef :TUserDefEvent ; //未定义消息
FOnKeep:TOnKeepEvent; //保持
FOnGetKeep:TOnGetKeepEvent; //取保持
FOnClearThree:TNotifyEvent ;
FOnLinkThree:TNotifyEvent ;
FOnRecord : TOnRecordEvent;
FOnPlayBegin : TNotifyEvent;
FOnPlayEnd : TNotifyEvent ;
FChannelID:word;
procedure SetHost(aHost :string);
procedure SetPort(aport :integer);
procedure SetConnect(aConnect :Boolean);
procedure WndProc(var Msg: TMessage);
procedure TestProc;
procedure MsgManager;
procedure LoginSucess(HsMsg:PHsMessage);
procedure ErrorMsgManager(HsMsg:PHsMessage);
procedure UserDefMsgManager(HsMsg:PHsMessage);
procedure CallIn(HsMsg:PHsMessage);
procedure idTcpClientOnConnect(Sender:TObject);
procedure idTcpClientOnDisConnect(Sender:TObject);
procedure SendMsgToSvr(aHsMsg:THsMessage);
protected
{ Protected declarations }
public
{ Public declarations }
constructor create(AOwner:TComponent);override;
destructor Destroy;override;
procedure SetAppConfig(Host:string;Port:integer);
procedure Login(ChannelID:word;StaffID:string;SeatType :word =0;ExpType1 :word =0;
ExpType2 :word =0;ExpType3 :word =0;ExpType4 :word =0;ExpType5 :word =0);
procedure LoginOut;
procedure HangUp; ///挂机
procedure ActiveHookUp; //主动摘机坐席
procedure PassiveHookUp; //被动摘机坐席(振铃摘机)
procedure CallOut(ChnlID:word);overload;
procedure CallOut(Caller,Dailer:string);overload;
procedure CallOut(Dailer:string);overload;
procedure Keep; //保持来电
procedure GetKeep(CallerPhone:string); //取保持来电
procedure LinkThree(CallerPhone:String);overload;
procedure ClearThree(CallerPhone:String);overload;
procedure LinkThree(ChnlID:integer);overload;
procedure ClearThree(ChnlID:integer);overload;
procedure Enjoy(PlayFile:string);
procedure StopEnjoy;
//procedure CallOut(CHnlID:word;Dailer:string);overlaod;
published
{ Published declarations }
property Host :string read FHost write SetHost;
property Port :integer read FPort write SetPort ;
property Connect :Boolean read FConnect write SetConnect ;
property OnConnected :TNotifyEvent read FOnConnect write FOnConnect;
property OnDisConnected :TNotifyEvent read FOnDisConnect write FOnDisConnect;
property OnException :TDjExceptionEvent read FOnException write FOnException ;
property AfterLogin :TLoginEvent read FAfterLogin write FAfterLogin ;
property OnDialIn :TOnDialInEvent read FOnDialIn write FOnDialIn ;
property OnLink :TNotifyEvent read FOnLink write FOnLink ;
property OnHook:TNotifyEvent read FOnHook write FOnHook ;
property OffHook :TNotifyEvent read FOffHook write FOffHook ;
property OnCallSucess :TNotifyEvent read FOnCallSucess write FOnCallSucess;
property OnCallFail:TNotifyEvent read FOnCallFail write FOnCallFail ;
property OnLoginOff:TLoginEvent read FOnLoginOff write FOnLoginOff;
property OnOtherHang:TOnOtherHangEvent read FOnOtherHang write FOnOtherHang ;
property OnUserDef:TUserDefEvent read FOnUserDef write FOnUserDef;
property OnKeep:TOnKeepEvent read FOnKeep write FOnKeep ;
property OnGetKeep:TOnGetKeepEvent read FOnGetKeep write FOnGetKeep ;
property OnLinkThree:TNotifyEvent read FOnLinkThree write FOnLinkThree;
property OnClearThree:TNotifyEvent read FOnClearThree write FOnClearThree;
property OnRecord:TOnRecordEvent read FOnRecord write FOnRecord ;
property OnPlayBegin:TNotifyEvent read FOnPlayBegin write FOnPlayBegin ;
property OnPlayEnd:TNotifyEvent read FOnPlayEnd write FOnPlayEnd;
end;
procedure Register;
implementation
uses unitWriteLogThread, uSysStr;
procedure Register;
begin
RegisterComponents('DjBK', [TDjCCCx]);
end;
{ TDjCCCx }
procedure TDjCCCx.CallIn(HsMsg: PHsMessage);
var
CallInStruct:pCallInStruct ;
begin
CallInStruct := @(HsMsg.m_pMessage);
if Assigned(FOnDialin) then
begin
FOnDialIn(Self,CallInStruct.CallType,CallInStruct.ChnlID
,CallInStruct.CallerPhone,CallInStruct.ReceiverPhone);
end;
end;
constructor TDjCCCx.create(AOwner: TComponent);
begin
inherited create(AOwner);
FConnect := false ;
FHost := '';
FPort := 0 ;
InitCS;
FWindowHandle := Classes.AllocateHWnd(WndProc);
if not (csDesigning in ComponentState) then
begin
idTcpClient := TIdTCPClient.Create(self);
ClientThread := TClentThread.create(FWindowHandle,idTcpClient);
AddLogToListB('开始运行','客户端',LogError);
idTcpClient.OnConnected := idTcpClientOnConnect ;
idTcpClient.OnDisconnected := idTcpClientOnDisConnect ;
end;
MsgList := TMsgList.Create;
end;
destructor TDjCCCx.Destroy;
begin
Classes.DeallocateHWnd(FWindowHandle);
idTcpClient.Free;
AddLogToListB('结束运行','客户端',LogError);
DeleteCS;
inherited;
end;
procedure TDjCCCx.ErrorMsgManager(HsMsg:PHsMessage);
var
ErrorStruct:pErrorStruct;
begin
ErrorStruct := @(HsMsg.m_pMessage);
case TMsgType(ErrorStruct.SeatId) of
U_MSG_LOGON:
begin
if Assigned(FAfterLogin) then
begin
FAfterLogin(self,ErrorStruct.ErrorID);
end;
end;
D_MSG_ERROR:
begin
if Assigned(FOnException) then
begin
FOnException(self,E_THREADTOSERVER,Exception.Create(ErrorStruct.ErrorStr));
end;
idTcpClient.Disconnect;
end;
else
begin
AddLogToList('收到错误消息','');
end;
end;
end;
{-------------------------------------------------------------------------------
过程名: TDjCCCx.HangUp
作者: fengfan
日期: 2006.09.08
参数: 无
返回值: 无
-------------------------------------------------------------------------------}
procedure TDjCCCx.HangUp;
begin
SendMsgToSvr(AssembleMessage_Up_HangOn(FChannelID));
end;
procedure TDjCCCx.idTcpClientOnConnect(Sender: TObject);
begin
FConnect := idTcpClient.Connected ;
if Assigned(FOnConnect) then FOnConnect(self);
end;
procedure TDjCCCx.idTcpClientOnDisConnect(Sender: TObject);
var
i:Integer ;
begin
FConnect := idTcpClient.Connected ;
i:=0 ;
while not ClientThread.Suspended do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -