I cant seem to get read process memory working in delphi i dont know why at all either, ive googled it for like 2 hours the other night and know luck. so i figured ima try here
this is my source currently
thanks in advance for help
// Get Process ID
// Example
// Pidhandle := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
function GetID(Const ExeFileName: string; var ProcessId: integer): boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := false;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)
or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin
ProcessId:= FProcessEntry32.th32ProcessID;
result := true;
break;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
// Example
// cFolder:=(GetRegistryData(HKEY_LOCAL_MACHINE,'\software\valve\steam\', 'InstallPath'));
// ShowMessage(sFolder+'\steamapps\'+Edit1.text+'\insurgency\insurgency\')
function GetRegistryData(RootKey: HKEY; Key, Value: string): variant;
var
Reg: TRegistry;
RegDataType: TRegDataType;
DataSize, Len: integer;
s: string;
label cantread;
begin
Reg := nil;
try
Reg := TRegistry.Create(KEY_QUERY_VALUE);
Reg.RootKey := RootKey;
if Reg.OpenKeyReadOnly(Key) then begin
try
RegDataType := Reg.GetDataType(Value);
if (RegDataType = rdString) or
(RegDataType = rdExpandString) then
Result := Reg.ReadString(Value)
else if RegDataType = rdInteger then
Result := Reg.ReadInteger(Value)
else if RegDataType = rdBinary then begin
DataSize := Reg.GetDataSize(Value);
if DataSize = -1 then goto cantread;
SetLength(s, DataSize);
Len := Reg.ReadBinaryData(Value, PChar(s)^, DataSize);
if Len <> DataSize then goto cantread;
Result := s;
end else
cantread:
raise Exception.Create(SysErrorMessage(ERROR_CANTREAD));
except
s := ''; // Deallocates memory if allocated
Reg.CloseKey;
raise;
end;
Reg.CloseKey;
end else
raise Exception.Create(SysErrorMessage(GetLastError));
except
Reg.Free;
raise;
end;
Reg.Free;
end;
No, because ReadProcessMemory doesn't return the value to be read. The result is stored in the pointer NewValue, so you'd want to use something like
PHP Code:
Label1.Caption:= NewValue;
the thing with this is i dont want it to replace any values i just noticed the read and write is the same minus the New value, SO "newvalue" shouldn't be declared from me but from the game itself correct?
the thing with this is i dont want it to replace any values i just noticed the read and write is the same minus the New value, SO "newvalue" shouldn't be declared from me but from the game itself correct?
NewValue is just the pointer to store the value in, I dont program in Delphi but api's stay api's, See it like NewValue(or whatever name u give it) is an empty box and in that box you want to put something, you also know where that something can be found(address) so u tell Delphi to read the value and store it in ur box.
Now your box contains something and u output it with your label, or textbox, messagebox whatever you like.
I exactly said what unknown said, just in diff words hope it helped.
NewValue is just the pointer to store the value in, I dont program in Delphi but api's stay api's, See it like NewValue(or whatever name u give it) is an empty box and in that box you want to put something, you also know where that something can be found(address) so u tell Delphi to read the value and store it in ur box.
Now your box contains something and u output it with your label, or textbox, messagebox whatever you like.
I exactly said what unknown said, just in diff words hope it helped.
i understand down o.0 time to test it tuvm both
edit bah idk is it possible somebody can write a small sample this **** doesnt work UGH!
edit bah idk is it possible somebody can write a small sample this **** doesnt work UGH!
Keep trying, Id suggest you to look again at the sample unknown gave you,
Its like all you need.
all you have to do is add the way u want to output the value.
See i think ur problem is all the code for the process and stuff is messy, i mean i cant even be bothered looking thru it.
Api's stay same, C# VB Delphi, and unknowns code looked correct.
Keep trying, the code is there and otherwise start smaller, first learn how to make api calls then try again I dont say this to be mean but seeing how I have this feeling that code is just copied and pasted as you had no idea what the variable NewValue was doing.
So i think or go over unknown's code again or start smaller
[Delphi] Readprocessmemory() mit dezimal? 06/12/2010 - General Coding - 3 Replies Hallo, ich hätte noch eine frage.
ReadProcessMemory(Pidhndl,ptr(BaseAddr), @AtmTargetPointer, Data, written);
readprocessmemory gibt mir 0 als ausgabe. Ich verwende als Baseaddr eine Dezimalzahl.
Nun meine Frage : Kann man mit readprocessmemory auch Dezimale addressen auslesen? Ohne das ''$'' vor der addresse?
-298
[DELPHI&METIN]Wie sind die Delphi Befehle für einen Bot? 03/07/2010 - General Coding - 3 Replies Hallo liebe com,
ich habe mal eine Frage: Ich möchte einen Metin Bot in Delphi schreiben aber ich weiß nicht die Befehle für
eine bestimmte Taste senden etc.
könnt ihr mir die pls sagen oder per pn geben
MfGGGGGG
[delphi] ReadProcessMemory 10/30/2009 - General Coding - 1 Replies Hey guys,
I don't know how to use ReadProcessMemory to get a string.
Code:
ReadProcessMemory(PHandle,Pointer($3B98D104),@tem ,4,Read);
...:= string(tem);
This gives me an error
[Help!!!] Delphi + Readprocessmemory 11/02/2008 - General Coding - 1 Replies I cant seem to get read process memory working in delphi i dont know why at all either, ive googled it for like 2 hours the other night and know luck. so i figured ima try here
this is my source currently
thanks in advance for help
unit Unit1;
interface