📄 mainunit.pas
字号:
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;
max: integer;
fronttext: string;
aprilfools: boolean;
procedure AddToRecord(Line: Integer);
procedure AddAutoAssembleScript(script:string);
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;
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;
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;
{$R *.DFM}
var ncol: TColor;
procedure TFlash.Col;
begin
mainform.panel7.Color:=ncol;
end;
procedure TFlash.Execute;
var red,green: byte;
decreasered: boolean;
begin
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 (withouth it works too, but at least with this I know for sure it works.
sleep(10);
end;
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;
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
a:=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;
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 unknown initial value
begin
if not newscan.Enabled then exit;
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);
scantype.ItemIndex:=scantype.Items.IndexOf(StrUnknownInitialValue);
scantype.OnChange(scantype);
newscan.Click;
end;
21: //next scan IncreasedValue
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
if nextscanbutton.Enabled then
begin
scantype.ItemIndex:=scantype.Items.IndexOf(StrIncreasedValue);
scantype.OnChange(scantype);
nextscanbutton.click;
end
else Errorbeep;
end;
22: //next scan DecreasedValue
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
if nextscanbutton.Enabled then
begin
scantype.ItemIndex:=scantype.Items.IndexOf(StrDecreasedValue);
scantype.OnChange(scantype);
nextscanbutton.click;
end
else Errorbeep;
end;
23: //next scan ChangedValue
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
if nextscanbutton.Enabled then
begin
scantype.ItemIndex:=scantype.Items.IndexOf(StrChangedValue);
scantype.OnChange(scantype);
nextscanbutton.click;
end
else Errorbeep;
end;
24: //next scan unchangedValue
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
if nextscanbutton.Enabled then
begin
scantype.ItemIndex:=scantype.Items.IndexOf(StrUnchangedValue);
scantype.OnChange(scantype);
nextscanbutton.click;
end
else Errorbeep;
end;
25: //undo lastscan
begin
if not newscan.Enabled then exit;
if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
if undoscan.Enabled then
undoscan.Click
else
Errorbeep;
end;
26: //cancel current scan
begin
if (formscanning<>nil) and (formscanning.btnCancel.Enabled) then
formscanning.btnCancel.Click;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -