📄 unit_main.pas
字号:
exit;
end ;
end;
Frm_EditPass.ShowModal;
end;
procedure TFrmMain.N6Click(Sender: TObject);
begin
if Com_ServerList.ItemIndex<0 then exit;
Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
if Trim(Reg_SvrIp)='' then
begin
if (Reg_SvrPort<>0) then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp)
else
begin
Show_Message('无法找到注册服务器!',suiWarning);
exit;
end ;
end;
Frm_FindChar.ShowModal;
end;
procedure TFrmMain.N7Click(Sender: TObject);
begin
if Com_ServerList.ItemIndex<0 then exit;
Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
if Trim(Reg_SvrIp)='' then
begin
if (Reg_SvrPort<>0) then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp)
else
begin
Show_Message('无法找到注册服务器!',suiWarning);
exit;
end ;
end;
Frm_FindStorage.ShowModal;
end;
procedure TFrmMain.N9Click(Sender: TObject);
begin
if Com_ServerList.ItemIndex<0 then exit;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
Select_idx:=0;
if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
else
begin
Show_Message('无法找到注册服务器!',suiWarning);
exit;
end;
end;
procedure TFrmMain.N10Click(Sender: TObject);
begin
if Com_ServerList.ItemIndex<0 then exit;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
Select_idx:=1;
if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
else
begin
Show_Message('无法找到注册服务器!',suiWarning);
exit;
end;
end;
procedure TFrmMain.N11Click(Sender: TObject);
begin
if Com_ServerList.ItemIndex<0 then exit;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
Select_idx:=2;
if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
else
begin
Show_Message('无法找到注册服务器!',suiWarning);
exit;
end;
end;
procedure TFrmMain.N14Click(Sender: TObject);
begin
Show_Message('此功能尚未开放!',suiInformation);
end;
procedure TFrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
Inherited;//调用先前的处理函数
if (Message.CmdType and $FFF0 = SC_MINIMIZE) then FrmMain.Visible:=False;
end;
procedure TFrmMain.N18Click(Sender: TObject);
var
S:String;
Found:boolean;
HProcess,HSnapshot:THandle;
lpNumberOfBytesWritten: DWORD;
appe:TProcessEntry32;
iniFile:TiniFile;
begin
HSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
appe.dwSize:= SizeOf(appe);
found:= Process32First(HSnapshot, appe);
while Integer(found) <> 0 do
begin
s:=ExtractFileName(appe.szExeFile);
if (UpperCase(s)=UpperCase(ExtractFileName(Mir3ExeName))) or (UpperCase(s)=UpperCase('mir3.exe')) then
begin
HProcess:=OpenProcess(PROCESS_ALL_ACCESS,true,appe.th32ProcessID);
TerminateProcess(HProcess,0);
end;
Found:=Process32Next(HSnapshot,appe);
end;
CloseHandle(HSnapshot);
inifile:=TIniFile.create(ExtractFilePath(Mir3ExeName)+'Mir3.ini');
inifile.WriteString('Initial','ServerAddr','127.0.0.1');
IniFile.Free;
Application.Terminate;
end;
procedure TFrmMain.N17Click(Sender: TObject);
begin
FrmMain.Visible:=True;
end;
procedure TFrmMain.CreateParams(var Params:TCreateParams);
begin
//设置窗体类名
Inherited CreateParams(Params);
Params.WinClassName:=APPNAME;
end;
procedure TFrmMain.RestoreReaues(var message:TMessage);
begin
Application.BringToFront;
if IsIconic(Application.Handle) then
begin
Application.Restore;
end
else
begin
Application.BringToFront;
end;
FrmMain.Visible:=True;
end;
procedure TFrmMain.N16Click(Sender: TObject);
begin
Frm_About.ShowModal;
end;
procedure TFrmMain.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
suiStatusBar1.Panels[0].Text:='无法与游戏服务器连接';
CSocket.Active:=False;
VerCode:=0;
ErrorCode:=0;
end;
procedure TFrmMain.CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
Str,data:string;
begin
suiStatusBar1.Panels[0].Text:='连接成功。';
str:=Socket.ReceiveText;
str:=ArrestStringEx(str,'#','!',data);
DecodeMessagePacket(data);
end;
function TFrmMain.DecodeMessagePacket(data:String):integer;
var
head, body: String;
msg:TDefaultMessage;
fq:T_SFindQuiz;
fp:T_SFindPass;
Eiinfo:TEiInfo;
Path,ExeName:String;
begin
Result:=0;
head := Copy (data, 1, DEFBLOCKSIZE);
body := Copy (data, DEFBLOCKSIZE+1, Length(data)-DEFBLOCKSIZE);
msg := DecodeMessage (head);
path:=ExtractFilePath(Mir3ExeName);
ExeName:=ExtractFileName(Mir3ExeName);
if Check_Win.Checked then
begin
ShellExecute(Handle,'open',Pchar(ExeName),'-u -c -m',Pchar(path),SW_SHOW);
end
else ShellExecute(Handle,'open',Pchar(ExeName),'-u -c',Pchar(path),SW_SHOW) ;
if msg.Comm=SM_GetMirServer_Succed then//查找版本号成功
begin
if msg.param=0 then
begin
suiStatusBar1.Panels[0].Text:='封脱机、封外挂。';
DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
WgName:=Eiinfo.WgName;
Timer_SetMir3.Enabled:=True;
Time_SetWg.Enabled:=True;
end;
if msg.param=1 then
begin
suiStatusBar1.Panels[0].Text:='封脱机。';
DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
WgName:='';
Timer_SetMir3.Enabled:=True;
Time_SetWg.Enabled:=False;
end;
if msg.param=2 then
begin
suiStatusBar1.Panels[0].Text:='封外挂,不封脱机';
DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
WgName:=Eiinfo.WgName;
Sleep(500);
VerCode:=20030704;
Timer_SetMir3.Enabled:=True;
Time_SetWg.Enabled:=True;
end;
if msg.param=3 then
begin
suiStatusBar1.Panels[0].Text:='不封外挂,不封脱机';
DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
Sleep(500);
VerCode:=20030704;
WgName:='';
Timer_SetMir3.Enabled:=True;
Time_SetWg.Enabled:=False;
end;
end;
if msg.Comm=SM_GetMirServer_Fail then//查找版本号失败
begin
suiStatusBar1.Panels[0].Text:='接收版本号失败。';
VerCode:=0;
VerCode:=20030704;
WgName:='';
Timer_SetMir3.Enabled:=True;
end;
end;
procedure TFrmMain.Time_SetWgTimer(Sender: TObject);
begin
SetWg(WgName);
end;
procedure TFrmMain.Timer2Timer(Sender: TObject);
var
msg:TDefaultMessage;
begin
msg:=MakeDefaultMsg(CM_GetMirServer,0);
SendSocket(CSocket.Socket,EncodeMessage(msg));
Timer2.Enabled:=False;
end;
procedure TFrmMain.Timer_SetMir3Timer(Sender: TObject);
var
h:hwnd;
begin
h:=FindWindow('WH GEngine',nil);
if h>0 then
begin
Sleep(500);
SetMir3(VerCode);
// if not SetMir3(VerCode) then suiStatusBar1.Panels[0].Text:='暂不支持该客户端,请到本站下载。' else suiStatusBar1.Panels[0].Text:='正常游戏';
Timer_SetMir3.Enabled:=False;
end;
end;
procedure TFrmMain.suiImageButton2Click(Sender: TObject);
var
iniFile:TIniFile;
Tmp_Ip:string;
Msg:TDefaultMessage;
h:hwnd;
path:String;
begin
if Com_ServerList.ItemIndex<0 then Exit;
if Mir3ExeName='' then
begin
OpenDialog1.Filter:='*.exe|*.exe';
if OpenDialog1.Execute then Mir3ExeName:=OpenDialog1.FileName;
end;
path:=ExtractFilePath(Mir3ExeName);
NoticeMemo.SaveToFile(Path+'notice.ntc');
CmlistMemo.SaveToFile(Path+'Cmlist.dat');
inifile:=TIniFile.create(path+'Mir3.ini');
if PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp<>'' then
inifile.WriteString('Initial','ServerAddr',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp)
else
begin
HostToIP(PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerUrl,Tmp_Ip);
inifile.WriteString('Initial','ServerAddr',Tmp_Ip)
end;
inifile.WriteInteger('Initial','Param1',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerPort);
inifile.WriteInteger('Server','ServerCount',1);
inifile.WriteString('Server','server1caption',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerCaption);
inifile.WriteString('Server','server1name',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerName);
iniFile.Free;
FrmMain.Visible:=False;
h:=FindWindow('WH GEngine',nil);
if h>0 then CloseHwnd(h);
Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
if (Reg_SvrPort<>0) and (Trim(Reg_SvrIp)='') then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp);
CSocket.Active:=False;
CSocket.Address:=Reg_SvrIp;
CSocket.Port:=Reg_SvrPort;
Try
CSocket.Active:=True;
suiStatusBar1.Panels[0].Text:='正在查询验证码';
except end;
Timer2.Enabled:=True;
end;
procedure TFrmMain.suiImageButton1Click(Sender: TObject);
begin
N2.Click;
end;
procedure TFrmMain.SysTray1IconDblClick(Sender: TObject);
begin
FrmMain.Visible:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -