📄 unit2.pas.svn-base
字号:
unit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,math, StdCtrls,ceclient, ComCtrls, ExtCtrls, Menus, Buttons,clipbrd, XPMan,registry,debugger,cefuncproc,netapis;resourcestring CEnorm = 'Cheat Engine 5.0 client'; CERegion = 'Cheat Engine 5.0 client - Please wait!'; CESearch = 'Cheat Engine 5.0 client - Please wait!'; CERegionSearch = 'Cheat Engine 5.0 client - Please wait!'; CEWait= 'Cheat Engine 5.0 client - Please wait!'; strNoDescription='No description'; strClose='Close'; strStop='Stop'; strOk='OK';//scanoptionsconst SO_FASTSCAN=$1; SO_HEXADECIMAL=$2; SO_READONLY=$4; SO_FINDONLYONE=$8; SO_ISBINARY=$10; SO_UNICODE=$20;type grouptype = array[1..4] of boolean;type TSkin = record Marker: String[6]; backgroundimage: Boolean; ProcessTextColor: TColor; Normaltextcolor: TColor; InvertedNormalTextColor: TColor; Groupboxcolor: TColor; Backgroundcolor: TColor; Selectedrecordcolor: TColor; Selectedrecordcolor2: TColor; Textfieldcolor: TColor; Textfieldbackgroundcolor: TColor; showHelp: Boolean;end;type TMainForm = class(TForm) Splitter1: TSplitter; Panel1: TPanel; Panel2: TPanel; SortByFrozenButton: TButton; SortByDescriptionButton: TButton; SortByAddressButton: TButton; SortByTypeButton: TButton; SortByValueButton: TButton; Panel3: TPanel; Label30: TLabel; Label29: TLabel; Label12: TLabel; Label27: TLabel; Label15: TLabel; Label16: TLabel; Label13: TLabel; Label18: TLabel; Label23: TLabel; Label28: TLabel; Label3: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label14: TLabel; Label17: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label24: TLabel; Label25: TLabel; Label26: TLabel; Label31: TLabel; Label32: TLabel; Label33: TLabel; Label34: TLabel; Label35: TLabel; Label36: TLabel; Label37: TLabel; Label39: TLabel; Label40: TLabel; Label41: TLabel; Label42: TLabel; Label43: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; ScrollBar1: TScrollBar; Panel4: TPanel; advancedbutton: TSpeedButton; CommentButton: TSpeedButton; Panel5: TPanel; ProcessLabel: TLabel; FoundLabel: TLabel; ScanText: TLabel; Label4: TLabel; Label8: TLabel; LoadButton: TSpeedButton; SaveButton: TSpeedButton; SpeedButton1: TSpeedButton; Logo: TImage; Label6: TLabel; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; FControl: TEdit; FoundList: TListBox; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Dos: TRadioButton; Windows: TRadioButton; Readonly: TCheckBox; FromAddress: TMemo; ToAddress: TMemo; cbFastScan: TCheckBox; NewScan: TButton; NextScanButton: TButton; ScanType: TComboBox; VarType: TComboBox; Button3: TButton; Button1: TButton; ProgressBar1: TProgressBar; HexadecimalCheckbox: TCheckBox; UndoScan: TButton; rbBit: TRadioButton; rbDec: TRadioButton; scanvalue: TEdit; cbCaseSensitive: TCheckBox; PopupMenu2: TPopupMenu; Deletethisrecord1: TMenuItem; Browsethismemoryregion1: TMenuItem; SetHotkey1: TMenuItem; Freezealladdresses2: TMenuItem; Unfreezealladdresses1: TMenuItem; N5: TMenuItem; Setbreakpoint1: TMenuItem; Findoutwhatreadsfromthisaddress1: TMenuItem; sep1: TMenuItem; Calculatenewvaluepart21: TMenuItem; N4: TMenuItem; Cut1: TMenuItem; Copy1: TMenuItem; Paste1: TMenuItem; N1: TMenuItem; Groupoption1: TMenuItem; Settonogroup1: TMenuItem; N2: TMenuItem; Settogroup11: TMenuItem; Settogroup21: TMenuItem; Settogroup31: TMenuItem; Settogroup41: TMenuItem; N3: TMenuItem; Sortaddressesbygroup1: TMenuItem; PopupMenu1: TPopupMenu; Browsethismemoryarrea1: TMenuItem; Removeselectedaddresses1: TMenuItem; Selectallitems1: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; TopDisabler: TTimer; emptypopup: TPopupMenu; ccpmenu: TPopupMenu; Cut2: TMenuItem; Copy2: TMenuItem; Paste2: TMenuItem; StatusBar1: TStatusBar; cbSpeedhack: TCheckBox; Label52: TLabel; Edit2: TEdit; Edit1: TEdit; Label51: TLabel; btnSetSpeedhack: TButton; CheckBox8: TCheckBox; RadioButton3: TRadioButton; Findoutwhataccessesthisaddress1: TMenuItem; FreezeTimer: TTimer; UpdateTimer: TTimer; UpdateFoundlisttimer: TTimer; cbUnicode: TCheckBox; Label5: TLabel; Label7: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure SpeedButton1Click(Sender: TObject); procedure DosClick(Sender: TObject); procedure WindowsClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure VarTypeChange(Sender: TObject); procedure ScanTypeChange(Sender: TObject); procedure Button1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure Deletethisrecord1Click(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure NewScanClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Layoutsettings1Click(Sender: TObject); procedure NextScanButtonClick(Sender: TObject); procedure ValueClick(Sender: TObject); procedure CommentButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure SpeedButton2Click(Sender: TObject); procedure CommentButtonClick(Sender: TObject); procedure SaveButtonClick(Sender: TObject); procedure LoadButtonClick(Sender: TObject); procedure FControlEnter(Sender: TObject); procedure FControlExit(Sender: TObject); procedure Label28Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure AddressClick(Sender: TObject); procedure Typeclick(Sender: TObject); procedure FControlKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FControlKeyPress(Sender: TObject; var Key: Char); procedure Cut1Click(Sender: TObject); procedure Copy1Click(Sender: TObject); procedure Paste1Click(Sender: TObject); procedure Calculatenewvaluepart21Click(Sender: TObject); procedure PopupMenu2Popup(Sender: TObject); procedure SettogroupXClick(Sender: TObject); procedure Settonogroup1Click(Sender: TObject); procedure Freezealladdresses2Click(Sender: TObject); procedure Unfreezealladdresses1Click(Sender: TObject); procedure Panel1Resize(Sender: TObject); procedure Panel1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure slectItem(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure CheckBox2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ScrollBar1Enter(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Browsethismemoryarrea1Click(Sender: TObject); procedure Browsethismemoryregion1Click(Sender: TObject); procedure scanvalueKeyPress(Sender: TObject; var Key: Char); procedure CheckBox8Click(Sender: TObject); procedure cbSpeedhackClick(Sender: TObject); procedure btnSetSpeedhackClick(Sender: TObject); procedure RadioButton3Click(Sender: TObject); procedure Setbreakpoint1Click(Sender: TObject); procedure Findoutwhatreadsfromthisaddress1Click(Sender: TObject); procedure Findoutwhataccessesthisaddress1Click(Sender: TObject); procedure advancedbuttonClick(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label7Click(Sender: TObject); private { Private declarations } numberoflines: integer; frozenbox: array of TCheckbox; description: array of TLabel; address: array of TLabel; ValType: array of TLabel; Value: array of TLabel; Select: array of TLabel; oldwidth,oldheight: integer; newaddress: Dword; isbit: boolean; old8087CW: word; procedure LoadDefaultSkin; procedure copySelectedRecords; procedure Paste; procedure setfoundlisthorizontal; procedure WMGetMinMaxInfo(var Message: TMessage); message WM_GETMINMAXINFO; procedure SetWriteBreakpoint(address:dword;size: integer); procedure SetReadBreakpoint(address:dword;size: integer); procedure SetReadWriteBreakpoint(address:dword;size: integer); public { Public declarations } Advanced: boolean; ProcessOpened: boolean; max: integer; buffersize: dword; opening: string; numberofrecords,oldNumberOfRecords,oldcodelistcount: Integer; memrec: array of Memoryrecord; oldmemrec: array of Memoryrecord; oldcomments: string; values: array of String[255]; Hotkeystrings: Array of string; Hotkeys: array of integer; selected: array of Boolean; lastselected: Integer; LastLastSelected: Integer; FirstShiftSelected: Integer; lag: Integer; skin: TSkin; MemImage: TMemoryStream; CheatEngineDir: String; updatetimerspeed,freezetimerspeed: integer; Procedure AddToRecord(line:Integer); procedure updatescreen; procedure Updateskin; procedure Deleterecords; procedure Deletegroups(groups: grouptype); procedure UpdateScantype; procedure UpdateList; procedure ShowValues; function CheckIfSaved: boolean; procedure Resync; procedure ReserveMem; procedure Addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode,showashex: boolean); end;var MainForm: TMainForm; Skip_PAGE_NOCACHE: Boolean;implementationuses processwindow, Unit1, changetimerunit, TypePopup, addformunit, commentsunit, layoutunit, Unit3, Standaloneunit, Changeoffsetunit, formsettingsunit, MemoryBrowserFormUnit,formscanningunit,opensave, FoundCodeUnit, AdvancedOptionsUnit,mainunit2;{$R *.DFM}procedure TMainForm.WMGetMinMaxInfo(var Message: TMessage);var MMInfo: ^MINMAXINFO;begin //the constraint function of the form behaves weird when draging from the top or left side, so I have to do this myself. MMInfo:=ptr(message.LParam); MMInfo.ptMinTrackSize:=point(515,501);end;procedure TMainform.ShowValues;var i,rec: integer;begin for i:=0 to numberoflines-1 do begin rec:=scrollbar1.Position+i; if rec<numberofrecords then begin value[i].Caption:=values[rec]; end; end;end;procedure TMainform.setfoundlisthorizontal;var i,maxwidth,chars,maxchars: integer;begin maxwidth:=0; maxchars:=0; for i:=0 to foundlist.Items.Count-1 do begin chars:=length(foundlist.Items[i]); //faster than 2 time retrieving if chars>maxchars then begin maxchars:=chars; end; end; foundlist.ScrollWidth:=8*maxchars;end;procedure TMainForm.ReserveMem;begin setlength(memrec,numberofrecords); setlength(values,NumberOfRecords); setlength(selected,numberofrecords); setlength(hotkeystrings,NumberOfRecords); setlength(Hotkeys,numberofrecords);end;procedure TMainForm.resync;var i,j,datasend: integer;begin output[0]:=6; //clear record list sendbuf(1); //put all adresses back for i:=0 to numberofrecords-1 do begin //if (i mod 2000)=0 then sleep(lag*4); //resync should be made safe so a lof of sleeping... output[0]:=CS_AddAddress; pdword(@output[1])^:=memrec[i].Address; case memrec[i].VarType of 0: output[5]:=1; 1: output[5]:=2; 2: output[5]:=4; 3: output[5]:=4; 4: output[5]:=8; 5: output[5]:=memrec[i].bitlength div 8+1; 6: output[5]:=8; 7: output[5]:=memrec[i].Bit; 8: output[5]:=memrec[i].bit; end; sendbuf(6); end; //and freeze the frozen ones //the client should have received the values before the desync for i:=0 to numberofrecords-1 do begin if memrec[i].Frozen then begin if (values[i]<>'NYA') and (values[i]<>'??') then begin output[0]:=CS_FREEZEADDRESS; //freeze address pword(@output[1])^:=i; sendbuf(3); end; end; end;end;procedure TMainForm.copySelectedRecords;var clip: TClipboard; textform: string; i: Integer;begin // clip:=TClipboard.Create; textform:='CETables-';// textform:='aaa'+chr(13)+'FFFFFF'+chr(13)+'DWORD'+chr(13); there can only be an CR when hex editing the savetable. for i:=0 to numberofrecords-1 do begin if selected[i] then textform:=textform+memrec[i].Description+chr(13)+'$'+IntTohex(memrec[i].Address,8)+chr(13)+IntToStr(memrec[i].VarType)+chr(13); end; clip.SetTextBuf(pchar(textform)); //text address typeend;procedure TMainform.paste;var clip: TClipboard; textform: string; textform2: Pchar; i,j,k,l: Integer; last: Integer; temprec: array of memoryRecord;begin //paste k:=0; j:=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -