main.pas
来自「FIR引擎最新源码+注册」· PAS 代码 · 共 596 行 · 第 1/2 页
PAS
596 行
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JSocket, Share, ExtCtrls, ComCtrls, Mask, RzEdit, StdCtrls,
EDcode, MSI_CPU, MSI_Storage, MD5EncodeStr, Spin;
type
TfrmFMain = class(TForm)
ClientSocket: TClientSocket;
DecodeTimer: TTimer;
StatusBar: TStatusBar;
GroupBoxLogin: TGroupBox;
Label1: TLabel;
EditAccout: TEdit;
Label2: TLabel;
EditPassword: TEdit;
GroupBoxUser: TGroupBox;
Label3: TLabel;
EditUserAccount: TEdit;
Label4: TLabel;
EditUserPassword: TEdit;
Label5: TLabel;
EditUserQQ: TEdit;
RadioGroupUserMode: TRadioGroup;
Label6: TLabel;
DateTimeEditStartDate: TRzDateTimeEdit;
Label7: TLabel;
DateTimeEditEndDate: TRzDateTimeEdit;
Label8: TLabel;
Label9: TLabel;
EditSerialNumber: TEdit;
ButtonLogin: TButton;
ButtonCloseSocket: TButton;
RadioGroupBind: TRadioGroup;
ButtonAdd: TButton;
ButtonDel: TButton;
ButtonChg: TButton;
ButtonSearch: TButton;
Label10: TLabel;
EditIPaddr: TEdit;
RadioGroupMainVersion: TRadioGroup;
Label11: TLabel;
Label12: TLabel;
SpinEditPermission: TSpinEdit;
SpinEditMaxIpCount: TSpinEdit;
SpinEditMaxDay: TSpinEdit;
procedure DecodeTimerTimer(Sender: TObject);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ButtonAddClick(Sender: TObject);
procedure ButtonLoginClick(Sender: TObject);
procedure ButtonCloseSocketClick(Sender: TObject);
procedure ButtonDelClick(Sender: TObject);
procedure ButtonSearchClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RadioGroupUserModeClick(Sender: TObject);
procedure RadioGroupBindClick(Sender: TObject);
procedure SpinEditMaxDayChange(Sender: TObject);
private
{ Private declarations }
procedure DecodeMessagePacket(sData: string);
procedure SendSearchUser(sData: string);
procedure SendDelUser(sData: string);
procedure SendChgUser(UserSession: TUserSession);
procedure SendAddUser(UserSession: TUserSession);
procedure SendLoginUser(sAccount, sPassword: string);
procedure SendSocket(Socket: TCustomWinSocket; sSendMsg: string);
procedure LoginSucces(sData: string);
procedure LoginFail(nCode: Integer);
procedure SearchSucces(sData: string);
public
{ Public declarations }
end;
var
frmFMain: TfrmFMain;
implementation
uses HUtil32, Common, EDcodeUnit, Grobal2;
{$R *.dfm}
procedure TfrmFMain.LoginSucces(sData: string);
begin
g_MySelf.sAccount := g_sAccount;
g_MySelf.sPassword := g_sPassword;
g_MySelf.boLogined := True;
ButtonLogin.Enabled := False;
ButtonCloseSocket.Enabled := True;
GroupBoxUser.Enabled := True;
StatusBar.Panels[1].Text := '登陆成功';
//Caption := DecryptString(sData);
Application.MessageBox('登陆成功!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
procedure TfrmFMain.LoginFail(nCode: Integer);
begin
g_MySelf.boLogined := False;
ButtonLogin.Enabled := True;
ButtonCloseSocket.Enabled := False;
GroupBoxUser.Enabled := False;
StatusBar.Panels[1].Text := '登陆失败';
case nCode of
2: Application.MessageBox('此账号已经登陆在线!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
3: Application.MessageBox('密码错误!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
else Application.MessageBox('登陆失败!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
end;
procedure TfrmFMain.SearchSucces(sData: string);
var
UserSession: TUserSession;
begin
FillChar(UserSession, SizeOf(TUserSession), 0);
DecryptBuffer(sData, @UserSession, SizeOf(TUserSession));
EditUserAccount.Text := UserSession.sAccount;
EditUserPassword.Text := UserSession.sPassword;
EditUserQQ.Text := IntToStr(UserSession.nUserQQ);
EditSerialNumber.Text := UserSession.sSerialNumber;
EditIPaddr.Text := MakeIntToIP(UserSession.nUserIPaddr);
SpinEditMaxIpCount.Value := UserSession.nLicCount;
DateTimeEditStartDate.Date := UserSession.dStartDate;
DateTimeEditEndDate.Date := UserSession.dEndDate;
SpinEditMaxDay.Value := UserSession.nLicCount;
RadioGroupUserMode.ItemIndex := UserSession.btMode - 1;
RadioGroupBind.ItemIndex := UserSession.btBind - 1;
RadioGroupMainVersion.ItemIndex := UserSession.btMainVersion - 1;
SpinEditPermission.Value := UserSession.btPermission;
StatusBar.Panels[2].Text := '搜索用户成功';
GroupBoxUser.Enabled := True;
end;
procedure TfrmFMain.DecodeMessagePacket(sData: string);
var
sLineText, sGameLineText: string;
nDataLen, I: Integer;
sDataMsg, sDefMsg, sDecodeMsg: string;
DefMsg: TDefaultMessage;
begin
nDataLen := Length(sData);
if (nDataLen >= DEFBLOCKSIZE) then begin
sDefMsg := Copy(sData, 1, DEFBLOCKSIZE);
sDataMsg := Copy(sData, DEFBLOCKSIZE + 1, Length(sData) - DEFBLOCKSIZE);
DefMsg := DecodeMessage(sDefMsg);
case DefMsg.Ident of
SP_SM_GETUSER_SUCCESS: ;
SP_SM_GETUSER_FAIL: ;
SP_SM_ADDUSER_SUCCESS: begin
StatusBar.Panels[2].Text := '增加用户成功';
Application.MessageBox('增加用户成功!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
GroupBoxUser.Enabled := True;
end;
SP_SM_ADDUSER_FAIL: begin
StatusBar.Panels[2].Text := '增加用户失败';
case DefMsg.Recog of
0: Application.MessageBox('此用户已经存在!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-1: Application.MessageBox('用户IP不正确!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-2: Application.MessageBox('你的账号已经过期!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-3: Application.MessageBox('你没有登陆或者权限不够!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
else Application.MessageBox('增加用户失败!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
GroupBoxUser.Enabled := True;
end;
SP_SM_DELUSER_SUCCESS: begin
StatusBar.Panels[2].Text := '删除用户成功';
Application.MessageBox('删除用户成功!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
GroupBoxUser.Enabled := True;
end;
SP_SM_DELUSER_FAIL: begin
StatusBar.Panels[2].Text := '删除用户失败';
case DefMsg.Recog of
-4: Application.MessageBox('你没有登陆或者权限不够!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-3: Application.MessageBox('你的账号已经过期!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-2: Application.MessageBox('此账号正在使用!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
else Application.MessageBox('删除用户失败!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
GroupBoxUser.Enabled := True;
end;
SP_SM_CHGUSER_SUCCESS,
SP_SM_CHGUSER_FAIL: begin
StatusBar.Panels[2].Text := '修改用户数据失败';
case DefMsg.Recog of
-4: Application.MessageBox('你没有登陆或者权限不够!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-3: Application.MessageBox('你的账号已经过期!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-2: Application.MessageBox('此账号正在使用!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
else Application.MessageBox('修改用户数据失败!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
GroupBoxUser.Enabled := True;
end;
SP_SM_SEARCHUSER_SUCCESS: SearchSucces(sDataMsg);
SP_SM_SEARCHUSER_FAIL: begin
StatusBar.Panels[2].Text := '搜索用户失败';
StatusBar.Panels[2].Text := '搜索用户失败失败';
case DefMsg.Recog of
-3: Application.MessageBox('你没有登陆或者权限不够!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
-4: Application.MessageBox('你的账号已经过期!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
else Application.MessageBox('搜索用户失败!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
end;
GroupBoxUser.Enabled := True;
end;
SM_LOGIN_SUCCESS: LoginSucces(sDataMsg);
SM_LOGIN_FAIL: LoginFail(DefMsg.Recog);
SM_GETUSER_SUCCESS: ;
SM_GETUSER_FAIL: ;
SM_ADDUSER_SUCCESS: ;
SM_ADDUSER_FAIL: ;
SM_DELUSER_SUCCESS: ;
SM_DELUSER_FAIL: ;
SM_CHGUSER_SUCCESS: ;
SM_CHGUSER_FAIL: ;
SM_SEARCHUSER_SUCCESS: ;
SM_SEARCHUSER_FAIL: ;
end;
end;
end;
procedure TfrmFMain.DecodeTimerTimer(Sender: TObject);
var
sData: string;
begin
if g_boBusy then Exit;
g_boBusy := True;
try
g_sRecvGameMsg := g_sRecvGameMsg + g_sRecvMsg;
g_sRecvMsg := '';
if g_sRecvGameMsg <> '' then begin
while Pos('!', g_sRecvGameMsg) > 0 do begin
if Pos('!', g_sRecvGameMsg) <= 0 then Break;
g_sRecvGameMsg := ArrestStringEx(g_sRecvGameMsg, '#', '!', sData);
if sData = '' then Break;
DecodeMessagePacket(sData);
if Pos('!', g_sRecvGameMsg) <= 0 then Break;
end;
end;
finally
g_boBusy := False;
end;
end;
procedure TfrmFMain.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
FillChar(g_MySelf, SizeOf(TSuperSession), 0);
g_MySelf.sAccount := '';
g_MySelf.sPassword := '';
g_MySelf.nMyQQ := 0;
g_MySelf.boLogined := False;
g_sRecvMsg := '';
g_sRecvGameMsg := '';
g_boBusy := False;
StatusBar.Panels[0].Text := '服务器连接成功...';
StatusBar.Panels[1].Text := '正在登陆...';
g_boConnect := True;
SendLoginUser(g_sAccount, g_sPassword);
end;
procedure TfrmFMain.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text := '服务器连接断开...';
StatusBar.Panels[1].Text := '未登陆';
g_boConnect := False;
g_MySelf.boLogined := False;
ButtonLogin.Enabled := True;
ButtonCloseSocket.Enabled := False;
Caption := g_sCaption;
end;
procedure TfrmFMain.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
g_sRecvMsg := g_sRecvMsg + Socket.ReceiveText;
end;
procedure TfrmFMain.ClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ButtonLogin.Enabled := True;
ButtonCloseSocket.Enabled := False;
ErrorCode := 0;
Socket.Close;
end;
procedure TfrmFMain.ButtonLoginClick(Sender: TObject);
var
sAccount: string;
sPassword: string;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?