📄 mainunit.pas.svn-base
字号:
procedure freedebugger(var Message: TMessage); message WM_FREEDEBUGGER;
procedure pointerscanner_addaddress(var Message: TMessage); message WM_COPYDATA;
procedure Hotkey2(var Message:TMessage); message wm_hotkey2;
procedure ScanDone(var message: TMessage); message WM_SCANDONE;
procedure FreezeThem;
Procedure Edit;
function paste(simplecopypaste: boolean): integer;
procedure CopySelectedRecords;
procedure DeleteRecords;
procedure Deletegroups(groups: grouptype);
procedure exceptionhandler(Sender: TObject; E: Exception);
procedure ResizeScreen;
procedure SetReadWriteBreakpoint(address: dword; size: dword);
procedure toggleWindow;
procedure adjustbringtofronttext;
procedure scanEpilogue(canceled: boolean);
procedure CancelbuttonClick(sender: TObject);
procedure CreateCustomScanButtonClick(sender: TObject);
procedure EditCustomScanButtonClick(sender: TObject);
procedure changeScriptCallback(script: string; changed: boolean);
//property functions
function GetRoundingType: TRoundingType;
procedure SetRoundingType(rt: TRoundingType);
function getScanStart: Dword;
procedure setScanStart(newscanstart: dword);
function getScanStop: Dword;
procedure setScanStop(newscanstop: dword);
function getFastscan: boolean;
procedure setFastScan(state: boolean);
function getScanReadonly: boolean;
procedure setScanReadOnly(state: boolean);
function getSelectedCustomScanData: TStringlist;
function getSelectedCustomScanType: TCustomScanType;
function getSelectedVariableType: TVariableType;
procedure setfoundcount(x: int64);
public
{ Public declarations }
test: single;
debugproc: boolean;
oldNumberOfRecords: Integer;
oldMemrec: array of memoryrecord;
OldComments: String;
oldcodelistcount: integer;
NumberOfRecords: Integer;
memrec: array of memoryrecord;
FrozenFvalue: Array of Double;
FrozenStrings: Array of string;
FrozenBytes: array of array of byte;
Hotkeystrings: Array of string;
Hotkeys: array of integer;
Selected: Array of Boolean;
lastselected: Integer;
LastLastSelected: Integer;
FirstShiftSelected: Integer; //-1 = no shift pressed before else it contains the record that has been selected
lastsave: array of memoryrecord;
lastsavecount: Integer;
NumberofLines: integer;
freezedirection: array of TLabel;
frozenbox: array of TCheckbox;
description: array of TLabel;
address: array of TLabel;
ValType: array of TLabel;
Value: array of TLabel;
Select: array of TLabel;
Priority: Dword;
memimage: TMemorystream;
canceled: boolean;
originalheight:integer;
originalwidth:integer;
fronttext: string;
aprilfools: boolean;
editedsincelastsave: boolean;
autoattachlist: tstringlist;
memscan: tmemscan;
procedure plugintype1click(Sender:tObject);
procedure AddToRecord(Line: Integer);
procedure AddAutoAssembleScript(script:string);
procedure reinterpretaddresses;
procedure Updatelist;
Procedure UpdateScreen;
procedure SetWriteBreakpoint(address: dword; size: dword);
procedure SetReadBreakpoint(address: dword; size: dword);
procedure setfoundlisthorizontal;
procedure reserveMem;
procedure ChangeValue(Itemnr: integer; NewValue:String);
function getStringFromRecord(itemid: Integer):string;
procedure EnableHypermode;
procedure disableHypermode;
Procedure UpdateScanType;
procedure enableGui(isnextscan: boolean);
procedure disableGui;
procedure SpawnCancelButton;
procedure DestroyCancelButton;
procedure disableautoassemblecheat(i: integer);
procedure enableautoassemblecheat(i: integer);
procedure addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode: boolean); overload;
procedure addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode,showashex: boolean); overload;
property foundcount: int64 read ffoundcount write setfoundcount;
property RoundingType: TRoundingType read GetRoundingType write SetRoundingType;
property ScanStart: dword read getScanStart write setScanStart;
property ScanStop: dword read getScanStop write setScanStop;
property FastScan: boolean read getFastscan write setFastscan;
property ScanReadOnly: boolean read getScanReadonly write setScanReadonly;
property SelectedCustomScanData: Tstringlist read getSelectedCustomScanData;
property SelectedCustomScanType: TCustomScanType read getSelectedCustomScanType;
property SelectedVariableType: TVariableType read getSelectedVariableType;
end;
var
MainForm: TMainForm;
ToggleWindows: TTogglewindows;
implementation
uses mainunit2,ProcessWindowUnit, MemoryBrowserFormUnit, TypePopup,
AddAddress, HotKeys, standaloneunit, aboutunit,
CommentsUnit, formsettingsunit, Changeoffsetunit, FoundCodeUnit, advancedoptionsunit,
formScanningUnit, formDifferentBitSizeUnit,OpenSave,
formMemoryTrainerUnit, MemoryTrainerDesignUnit, formhotkeyunit,
formAddressChangeUnit, formmemoryregionsunit,formPointerOrPointeeUnit,
frmhotkeyconfigunit, frmProcessWatcherUnit, formProcessInfo, frmautoinjectunit,
PasteTableentryFRM, pointerscannerfrm, PointerscannerSettingsFrm,
InjectedpointerscanornotFRM, frmGDTunit, frmFunctionlistUnit;
{$R *.DFM}
var ncol: TColor;
procedure TFlash.Col;
begin
mainform.panel7.Color:=ncol;
end;
procedure TFlash.Execute;
var red,green: byte;
decreasered: boolean;
begin
{$ifndef ceasinjecteddll}
freeonterminate:=true;
decreasered:=true;
red:=254;
green:=0;
while not terminated do
begin
if decreasered then
begin
dec(red,2);
inc(green,2);
if green>=250 then decreasered:=false;
end
else
begin
inc(red,2);
dec(green,2);
if red>=254 then
decreasered:=true;
end;
ncol:=(green shl 8)+red;
synchronize(col); //sigh (without it works too, but at least with this I know for sure it works.
sleep(10);
end;
{$endif}
mainform.Panel7.Color:=clBtnFace;
end;
constructor TToggleWindows.Create(CreateSuspended: Boolean);
begin
freeonterminate:=true;
inherited Create(CreateSuspended);
end;
procedure TToggleWindows.Execute;
begin
toggleotherwindows;
togglewindows:=nil;
end;
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.
//mainform.pix
MMInfo:=ptr(message.LParam);
if pixelsperinch=96 then
begin
MMInfo.ptMinTrackSize:=point(490,460);
end;
end;
procedure TFcontrol.wmMouseWheel(var msg: TWMMousewheel);
var k: word;
begin
//move down message
if msg.WheelDelta>0 then
k:=vk_up
else
k:=vk_down;
mainform.FControlKeyDown(self, k,[]);
end;
procedure TMainform.Hotkey2(var Message:TMessage);
var i:integer;
a,b: single;
s: string;
begin
case message.WParam of
0:
begin
//popup/hide CE
if advancedoptions.Pausebutton.Down then
begin
errorbeep;
exit;
end;
beep;
if formsettings.cbHideAllWindows.checked then
begin
ToggleWindow;
if formsettings.cbCenterOnPopup.checked then
if not allwindowsareback then
setwindowpos(mainform.Handle,HWND_NOTOPMOST,(screen.Width div 2)-(mainform.Width div 2),(screen.Height div 2)-(mainform.height div 2),mainform.Width,mainform.Height,SWP_NOZORDER or SWP_NOACTIVATE);
if not allwindowsareback then application.BringToFront else
setforegroundwindow(lastforeground);
adjustbringtofronttext;
exit;
end;
application.BringToFront;
SetForegroundWindow(mainform.Handle);
mainform.SetFocus;
if formsettings.cbCenterOnPopup.checked then
setwindowpos(mainform.Handle,HWND_NOTOPMOST,(screen.Width div 2)-(mainform.Width div 2),(screen.Height div 2)-(mainform.height div 2),mainform.Width,mainform.Height,SWP_NOZORDER or SWP_NOACTIVATE);
formstyle:=fsStayOnTop;
end;
1: //Pause
begin
with advancedoptions do
begin
pausedbyhotkey:=true;
pausebutton.down:=not pausebutton.down;
pausebutton.Click;
pausedbyhotkey:=false;
end;
end;
2: //speedhack
begin
if cbSpeedhack.Enabled then
begin
beep;
cbSpeedhack.checked:=not cbSpeedhack.Checked;
end;
end;
//3..7=set speedhack speed
3:
begin
if cbspeedhack.enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.checked then
begin
edit2.Text:=format('%.2f',[speedhackspeed1.speed]);
edit1.Text:=inttostr(speedhackspeed1.sleeptime);
btnSetSpeedhack.Click;
end;
end;
end;
4:
begin
if cbspeedhack.enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.checked then
begin
edit2.Text:=format('%.2f',[speedhackspeed2.speed]);
edit1.Text:=inttostr(speedhackspeed2.sleeptime);
btnSetSpeedhack.Click;
end;
end;
end;
5:
begin
if cbspeedhack.enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.checked then
begin
edit2.Text:=format('%.2f',[speedhackspeed3.speed]);
edit1.Text:=inttostr(speedhackspeed3.sleeptime);
btnSetSpeedhack.Click;
end;
end;
end;
6:
begin
if cbspeedhack.enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.checked then
begin
edit2.Text:=format('%.2f',[speedhackspeed4.speed]);
edit1.Text:=inttostr(speedhackspeed4.sleeptime);
btnSetSpeedhack.Click;
end;
end;
end;
7:
begin
if cbspeedhack.enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.checked then
begin
edit2.Text:=format('%.2f',[speedhackspeed5.speed]);
edit1.Text:=inttostr(speedhackspeed5.sleeptime);
btnSetSpeedhack.Click;
end;
end;
end;
8:
begin
//increase speed
try
if cbspeedhack.Enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.Checked then
begin
a:=strtofloat(edit2.text);
a:=a+speedupdelta;
edit2.Text:=format('%.2f',[a]);
btnSetSpeedhack.Click;
END;
end;
except
end;
end;
9:
begin
//decrease speed
try
if cbspeedhack.Enabled then
begin
cbspeedhack.Checked:=true;
if cbspeedhack.Checked then
begin
b:=strtofloat(edit2.text);
b:=b-slowdowndelta;
edit2.Text:=format('%.2f',[b]);
btnSetSpeedhack.Click;
end;
end;
except
end;
end;
10..18: //Change type (if possible)
begin
if vartype.Enabled then
vartype.itemindex:=message.WParam-3
else
begin
errorbeep;
end;
end;
19://new scan
begin
if not newscan.Enabled then exit; //only when no process is opened
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
i:=vartype.ItemIndex;
if newscan.Caption=strNewScan then
newscan.Click; //start new scan
vartype.ItemIndex:=i;
vartype.OnChange(vartype); //set previous type
end;
20: //new scan Exact value
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
i:=vartype.itemindex;
s:=scanvalue.Text;
if s='' then exit;
if newscan.Caption=strNewScan then
newscan.Click; //start new scan
vartype.ItemIndex:=i;
vartype.OnChange(vartype); //set previous type
scanvalue.Text:=s;
newscan.Click;
end;
21: //new scan unknown initial value
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -