Используя этот способ, я могу получить правильное значение, но я хотел бы получить пример того, как читать память моего собственного процесса без использования ReadProcessMemory.Прочитайте память моего собственного процесса без использования ReadProcessMemory
var
Modulo : HMODULE;
Value1, Value2, Read : Cardinal;
GetWindowTextAAPI: function (hWnd: HWND; lpString: PChar; nMaxCount: integer):integer; stdcall;
begin
Modulo := GetModuleHandle('user32.dll');
if (Modulo <> 0) then
begin
@GetWindowTextAAPI := GetProcAddress(Modulo, 'GetWindowTextA');
if (@GetWindowTextAAPI <> nil) then
begin
ReadProcessMemory(GetCurrentProcess, Pointer(@GetWindowTextAAPI), Addr(Value1), 4, Read);
ReadProcessMemory(GetCurrentProcess, Pointer(DWORD(@GetWindowTextAAPI)+4), Addr(Value2), 4, Read);
ShowMessage(
IntToStr(Value1)
+ ' ' +
IntToStr(Value2)
);
end;
end;
end;
Как правильно использовать функцию CopyMemory?
'Assert (PDWORD (@GetWindowTextAAPI)^= Value1)'. Я не уверен, что понимаю ... –
Добро пожаловать в StackOverflow! Не создавайте новую учетную запись для каждого из [ваших вопросов] (https://stackoverflow.com/users/6365505). Похоже, вы заинтересованы в подключении API. Правильно ли это? –
@SertacAkyuz возвращает ошибку утверждения. – 0x4