📄 djcccx.pas
字号:
Sleep(1000);
inc(i);
if i>5 then
begin
break;
end;
end;
if Assigned(FOnDisConnect) then FOnDisConnect(self);
end;
procedure TDjCCCx.Login(ChannelID: word; StaffID: string; SeatType,
ExpType1, ExpType2, ExpType3, ExpType4, ExpType5: word);
begin
FChannelID := ChannelID ;
SendMsgToSvr(AssembleMessage_Logon_Exp(StaffID,ChannelID,SeatType,
ExpType1,ExpType2,ExpType3,ExpType4,ExpType5));
end;
procedure TDjCCCx.LoginOut;
begin
SendMsgToSvr(AssembleMessage_Up_LOGOFF(FChannelID));
end;
procedure TDjCCCx.LoginSucess(HsMsg: PHsMessage);
begin
if Assigned(FAfterLogin) then
begin
FAfterLogin(Self,0);
end;
end;
procedure TDjCCCx.MsgManager;
var
HsMsg:PHsMessage;
begin
HsMsg := MsgList.RemoveData;
while Assigned(HsMsg) do
begin
case TMsgType(HsMsg.m_nMessageId) of
D_MSG_LOGON:LoginSucess(HsMsg); //登陆
D_MSG_ERROR:ErrorMsgManager(HsMsg); //错误
D_MSG_CALLIN:CallIn(HsMsg); //电话呼入
D_MSG_CONNECT:if Assigned(FOnLink) then FOnLink(self); //接通来话
D_MSG_OFFHOOK:if Assigned(FOffHook) then FOffHook(self);
D_MSG_ONHOOK: if Assigned(FOnHook) then FOnHook(Self);
D_MSG_LOGOFF:if Assigned(FOnLoginOff) then FOnLoginOff(self,0); //登出成功
D_MSG_CANCELDIAL :if Assigned(FOnCallFail) then FOnCallFail(Self); //呼出失败
D_MSG_DIALING: if assigned(FOnCallSucess) then FOnCallSucess(self); //呼出成功
D_MSG_KEEP:if Assigned(FOnKeep) then FOnKeep(Self,0);
D_MSG_GETKEEPSUCCESS:if Assigned(FOnGetKeep) then FOnGetKeep(Self,0,0);
D_MSG_GETKEEPFAIlED:if Assigned(FOnGetKeep) then FOnGetKeep(Self,0,1);
D_MSG_USERDEF:UserDefMsgManager(HsMsg);
D_MSG_BEGINPLAY:if Assigned(self.FOnPlayBegin) then FOnPlayBegin(self);
D_MSG_PLAYEND:if Assigned(self.FOnPlayEnd) then FOnPlayEnd(self);
//D_MSG_
else
if Assigned(FOnUserDef) then
begin
//move(HsMsg.m_pMessage[2],HsMsg.m_pMessage[0],20);
FOnUserDef(self,HsMsg.m_nMessageId,HsMsg.m_pMessage);
end;
end;
MsgList.AddPool(HsMsg);
HsMsg := MsgList.RemoveData ;
end;
end;
procedure TDjCCCx.SetAppConfig(Host: string; Port: integer);
begin
SetHost(Host);
SetPort(Port);
end;
procedure TDjCCCx.SetConnect(aConnect: Boolean);
begin
if FConnect <> aConnect then
begin
if aConnect then
begin
try
if idTcpClient.Connected then raise Exception.Create('连接已经建立!');
idTcpClient.Host:= Host;
idTcpClient.Port := Port;
idTcpClient.Connect;
Sleep(100);
ClientThread.IsRun := true ;
ClientThread.Resume ;
except
on e:exception do
begin
if Assigned(FOnException) then
FOnException(self,E_CONNECTTOSERVER,Exception.Create(e.Message));
end;
end;
end
else
begin
ClientThread.IsRun := false ;
while not ClientThread.Suspended do Sleep(100);
if idTcpClient.Connected then idTcpClient.Disconnect ;
end;
end;
end;
procedure TDjCCCx.SetHost(aHost: string);
begin
if (FHost <> aHost) then
begin
FHost := aHost;
SetConnect(false);
end;
end;
procedure TDjCCCx.SetPort(aPort: integer);
begin
if (FPort <> aPort) then
begin
FPort := aPort ;
SetConnect(false);
end;
end;
procedure TDjCCCx.TestProc;
begin
AddLogToListB('ceshi消息','sdf',LogError);
ShowLog;
end;
procedure TDjCCCx.UserDefMsgManager(HsMsg: PHsMessage);
var
UserDefStruct :pUserDefStruct ;
begin
UserDefStruct := @(HsMsg.m_pMessage);
case UserDefStruct.EventNum of
Event_OtherHang:if Assigned(FOnOtherHang) then FOnOtherHang(self,UserDefStruct.EventStr) ;//else HangUp;
Event_Clearthree:if Assigned(FOnClearThree) then FOnClearThree(self);
Event_LinkThree:if Assigned(FOnLinkThree) then FOnLinkThree(self);
Event_Record:if Assigned(FOnRecord) then FOnRecord(self,UserDefStruct.EventStr);
else
if Assigned(FOnUserDef) then
begin
move(HsMsg.m_pMessage[2],HsMsg.m_pMessage[0],20);
FOnUserDef(self,UserDefStruct.EventNum,HsMsg.m_pMessage);
end;
end;
end;
procedure TDjCCCx.WndProc(var Msg: TMessage);
begin
try
case Msg.Msg of
WM_ReceiveMessage:MsgManager;
WM_Test:TestProc;
end;
except
Application.HandleException(self);
end;
if not (Msg.Msg - WM_USER - 500 in [WM_ReceiveMessage - WM_USER - 500 ,
WM_TEST - WM_USER - 500]) then
begin
Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, msg.wParam, msg.lParam);
end;
end;
{-------------------------------------------------------------------------------
过程名: TDjCCCx.ActiveHookUp
作者: fengfan
日期: 2006.09.08
参数: 无
返回值: 无
-------------------------------------------------------------------------------}
procedure TDjCCCx.ActiveHookUp;
begin
SendMsgToSvr(AssembleMessage_Up_OFFHOOK(FChannelID));
end;
{-------------------------------------------------------------------------------
过程名: TDjCCCx.PassiveHookUp
作者: fengfan
日期: 2006.09.08
参数: 无
返回值: 无
-------------------------------------------------------------------------------}
procedure TDjCCCx.PassiveHookUp;
begin
SendMsgToSvr(AssembleMessage_Up_HANGOFF(FChannelID));
end;
{-------------------------------------------------------------------------------
过程名: TDjCCCx.CallOut
作者: fengfan
日期: 2006.09.08
参数: ChnlID: word
返回值: 无
-------------------------------------------------------------------------------}
procedure TDjCCCx.CallOut(ChnlID: word);
begin
SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,2,ChnlID));
end;
procedure TDjCCCx.CallOut(Caller, Dailer: string);
begin
SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,1,-2,Caller,Dailer));
end;
procedure TDjCCCx.CallOut(Dailer: string);
begin
SendMsgToSvr(AssembleMessage_Up_CallOut(FChannelID,1,-1,'',Dailer));
end;
procedure TDjCCCx.SendMsgToSvr(aHsMsg: THsMessage);
var
HsMsg :PHSMessage ;
begin
HsMsg := MsgList.RemovePool ;
if idTcpClient.Connected then
begin
move(aHsMsg,HsMsg^,sizeof(aHsMsg));
MsgList.AddSend(HsMsg);
end
else
begin
if Assigned(FOnException) then
FOnException(self,1,Exception.Create('服务器没有连接'));
MsgList.AddPool(HsMsg);
end;
end;
procedure TDjCCCx.GetKeep(CallerPhone: string);
begin
SendMsgToSvr(AssembleMessage_Up_GetKeep(FChannelID,1,0,CallerPhone));
end;
procedure TDjCCCx.Keep;
begin
SendMsgToSvr(AssembelMessage_Up_Keep(FChannelID));
end;
procedure TDjCCCx.ClearThree(CallerPhone: String);
begin
SendMsgToSvr(AssembleMessage_Up_EndThreeCall(FChannelID,2,0,CallerPhone));
end;
procedure TDjCCCx.ClearThree(ChnlID: integer);
begin
SendMsgToSvr(AssembleMessage_Up_EndThreeCall(FChannelID,1,ChnlID));
end;
procedure TDjCCCx.LinKThree(ChnlID: integer);
begin
SendMsgToSvr(AssembleMessage_Up_BeginThreeCall(FChannelID,1,ChnlID));
end;
procedure TDjCCCx.LinkThree(CallerPhone: String);
begin
SendMsgToSvr(AssembleMessage_Up_BeginThreeCall(FChannelID,2,0,CallerPhone));
end;
procedure TDjCCCx.Enjoy(PlayFile: string);
begin
SendMsgToSvr(AssembleMessage_Up_ENJOY(FChannelID,PlayFile));
end;
procedure TDjCCCx.StopEnjoy;
begin
SendMsgToSvr(AssembleMessage_Up_StopEnjoy(FChannelID));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -