⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_main.pas

📁 传奇3登陆器+服务端+配置器+配置生成器全套代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, SUIMainMenu, SUIButton, StdCtrls, SUIComboBox,
  SUIImagePanel, SUIGroupBox, jpeg, ExtCtrls, SUIForm, ComCtrls,
  SUIStatusBar, GIFImage, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdTelnet, OleCtrls, IniFiles,Unit_MyPro, SUIDlg,ShellApi,
  ScktComp, SysTray, SUIPopupMenu,TLHelp32, SHDocVw;
const
  CM_RESTORE=WM_USER+$1000;
  APPNAME='91gonet传奇3登陆器2.0商业';
type
  TFrmMain = class(TForm)
    suiForm1: TsuiForm;
    Panel1: TPanel;
    Image1: TImage;
    suiGroupBox1: TsuiGroupBox;
    Com_ServerList: TsuiComboBox;
    suiMainMenu1: TsuiMainMenu;
    Label_ServerStat: TLabel;
    Label2: TLabel;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    suiStatusBar1: TsuiStatusBar;
    Check_Win: TsuiCheckBox;
    Image_Open: TImage;
    IdTelnet1: TIdTelnet;
    Image_Close: TImage;
    WebBrowser1: TWebBrowser;
    suiMessageDialog1: TsuiMessageDialog;
    SysTray1: TSysTray;
    suiPopupMenu1: TsuiPopupMenu;
    N17: TMenuItem;
    N18: TMenuItem;
    OpenDialog1: TOpenDialog;
    CSocket: TClientSocket;
    Time_SetWg: TTimer;
    Timer2: TTimer;
    Timer_SetMir3: TTimer;
    suiImageButton1: TsuiImageButton;
    suiImageButton2: TsuiImageButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Show_Message(text:String;Icon:TsuiIconType);
    procedure Com_ServerListEnter(Sender: TObject);
    procedure Com_ServerListChange(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N14Click(Sender: TObject);
    procedure WMSysCommand(var Message: TWMSysCommand);message WM_SYSCOMMAND;
    procedure N18Click(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Time_SetWgTimer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer_SetMir3Timer(Sender: TObject);
    procedure suiImageButton2Click(Sender: TObject);
    procedure suiImageButton1Click(Sender: TObject);
    procedure SysTray1IconDblClick(Sender: TObject);//响应WM_SYSCOMMAND消息  private
    { Private declarations }
  public
    procedure CreateParams(var Params:TCreateParams);override;
    procedure RestoreReaues(var message:TMessage);message CM_RESTORE;
    function DecodeMessagePacket(data:String):integer;
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;
  VerCode:int64;
  WgName:String;
  NoticeMemo,CmlistMemo:TMemoryStream;
implementation

uses Unit_AddNewId, Unit_FindID, Unit_EditPass, Unit_FindChar,
  Unit_FindStorage, Unit_LevelIdx, Unit_About, Unit_RcFile, Unit_Msg;


{$R *.dfm}
procedure SetWg(WgName:String);
var
  S:String;
  Found:boolean;
  HProcess,HSnapshot:THandle;
  lpNumberOfBytesWritten: DWORD;
  appe:TProcessEntry32;
function ModuleEnum(processid:Dword):boolean;
var
  ModuleList :Thandle;
  pm :TMODULEENTRY32;
  foundModule:boolean;
begin
  Result:=True;
  ModuleList:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,processID);
  pm.dwSize:=sizeof(TMODULEENTRY32);
  foundModule:=module32first(ModuleList,pm);
  while integer(foundModule)<>0 do
  begin
    if pos(UpperCase(pm.szModule),UpperCase(WgName))>0 then
    begin
      Result:=False;
      exit;
    end;
    foundModule:=Module32Next(ModuleList,pm);
  end;
  closehandle(ModuleList);
end; // ModuleEnum
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
       if not ModuleEnum(appe.th32ProcessID) then
       begin
         HProcess:=OpenProcess(PROCESS_ALL_ACCESS,true,appe.th32ProcessID);
         TerminateProcess(HProcess,0);
         FrmMain.Show_Message('请勿使用恶意外挂!',suiWarning);
         FrmMain.Time_SetWg.Enabled:=False;
       end;
    Found:=Process32Next(HSnapshot,appe);
  end;
  CloseHandle(HSnapshot);
end;



procedure TFrmMain.FormCreate(Sender: TObject);
var
  IniFile:Tinifile;
  i,ServerCount:integer;
  Tmp_Server:PServerInfo;
begin
  Time_SetWg.Enabled:=True;
  NoticeMemo:=TMemoryStream.Create;
  CmlistMemo:=TMemoryStream.Create;
  VerCode:=0;
  Select_idx:=-1;
  ServerS:=TList.Create;
  Updates:=TList.Create;
  AppPath:=ExtractFilePath(Application.ExeName);
  IniFile:=TIniFile.Create(AppPath+'Client.Ini');
  Mir3ExeName:=IniFile.ReadString('Main','Mir3Exe','');
  ServerCount:=IniFile.ReadInteger('Server','ServerCount',0)+1;
  Pic_Memo:=TMemoryStream.Create;
  ReadFileInfo(ExeTitle,ExeVer,ExeType,ServerS,Updates,NoticeMemo,CmlistMemo);
  Pic_Memo.Position:=0;
  Image1.Picture.Graphic.LoadFromStream(Pic_Memo);
  Pic_memo.Free;
  SysTray1.Hint:=ExeTitle;
  Application.Title:=ExeTitle;
  suiForm1.Caption:=ExeTitle;
  SetForm_Style(suiForm1,ExeType);
  for i := 1 to ServerCount-1 do
  begin
    New(Tmp_Server);
    Tmp_Server.ServerName:=IniFile.ReadString('Server'+IntToStr(i),'ServerName','');
    Tmp_Server.ServerIp:=IniFile.ReadString('Server'+IntToStr(i),'ServerIp','');
    Tmp_Server.ServerPort:=IniFile.ReadInteger('Server'+IntToStr(i),'ServerPort',7000);
    Tmp_Server.ServerUrl:=IniFile.ReadString('Server'+IntToStr(i),'ServerUrl','http://bbs.91go.net');
    ServerS.Add(Tmp_Server);
  end;
  IniFile.Free;
end;

procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  IniFile:TIniFile;
  i:integer;
  S:String;
  Found:boolean;
  HProcess,HSnapshot:THandle;
  lpNumberOfBytesWritten: DWORD;
  appe:TProcessEntry32;
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(AppPath+'Client.Ini');
  IniFile.WriteString('Main','Mir3Exe',Mir3ExeName);
  IniFile.WriteInteger('Server','ServerCount',ServerS.Count-1);
  IniFile.WriteInteger('Wg','WgCount',ServerS.Count-1);
  for i:=1 to ServerS.Count-1 do
  begin
    IniFile.WriteString('Server'+IntToStr(i),'ServerName',PServerInfo(Servers[i]).ServerName);
    IniFile.WriteString('Server'+IntToStr(i),'ServerIp',PServerInfo(Servers[i]).ServerIp);
    IniFile.WriteInteger('Server'+IntToStr(i),'ServerPort',PServerInfo(Servers[i]).ServerPort);
    IniFile.WriteString('Server'+IntToStr(i),'ServerUrl',PServerInfo(Servers[i]).ServerUrl);
  end;
  IniFile.Free;
  inifile:=TIniFile.create(ExtractFilePath(Mir3ExeName)+'Mir3.ini');
  inifile.WriteString('Initial','ServerAddr','127.0.0.1');
  IniFile.Free;
  ServerS.Free;
  Updates.Free;
  NoticeMemo.Free;
  CmlistMemo.Free;
end;

procedure TFrmMain.Show_Message(text:String;Icon:TsuiIconType);
begin
  suiMessageDialog1.Caption:='提示信息';
  suiMessageDialog1.Text:=text;
  suiMessageDialog1.IconType:=Icon;
  suiMessageDialog1.ShowModal;
end;


procedure TFrmMain.Com_ServerListEnter(Sender: TObject);
var
  i:integer;
begin
  Com_ServerList.Items.Clear;
  for i := 0 to ServerS.Count-1 do
  begin
    if i=0 then Com_ServerList.Items.Add(Trim(PServerInfo(ServerS[i]).ServerCaption))
    else Com_ServerList.Items.Add(Trim(PServerInfo(ServerS[i]).ServerName));
  end;
end;

procedure TFrmMain.Com_ServerListChange(Sender: TObject);
var
  SerVerIp:string;
begin
  if Com_ServerList.ItemIndex<0 then exit;
  WebBrowser1.Navigate(PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerUrl);
  WebBrowser1.Align:=alClient;
  if PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp<>'' then
    SerVerIp:=PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp
  else
    HostToIP(PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerUrl,SerVerIp);
  CSocket.Active:=False;
  CSocket.Address:=SerVerIp;
  CSocket.Port:=PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerPort;
  try
    CSocket.Active:=True;
    Image_Open.Visible:=True;
    Image_Close.Visible:=False;
    Label_ServerStat.Font.Color:=clGreen;
    Label_ServerStat.Caption:='服务器状态正常。';
  except
    Image_Open.Visible:=False;
    Image_Close.Visible:=True;
    Label_ServerStat.Font.Color:=clRed;
    Label_ServerStat.Caption:='服务器关闭。';
  end;
  CSocket.Close;
end;

procedure TFrmMain.N2Click(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_AddNewId.ShowModal;
end;



procedure TFrmMain.N3Click(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_FindID.ShowModal;
end;

procedure TFrmMain.N4Click(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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -