| Код | function GetIDProcess(AName : PChar ) : Cardinal; StdCall; var lSnapHandle, lProcHandle: THandle; ProcStruct : PROCESSENTRY32; lProcessPath : Pchar; PID : Cardinal; begin Result := 0; lSnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); if lSnapHandle = 0 then exit; ProcStruct.dwSize := sizeof( PROCESSENTRY32 ); if Process32First(lSnapHandle, ProcStruct) then begin try repeat lProcessPath := ProcStruct.szExeFile; if uppercase(lProcessPath) = uppercase(AName) then begin PID := ProcStruct.th32ProcessID; Result := PID; Break; end; until not Process32Next(lSnapHandle, ProcStruct); finally CloseHandle(lSnapHandle); end; end; end;
procedure TForm1.Button1Click(Sender: TObject); var ProcessID,hProcess, WritenByte: Cardinal;
begin ProcessID:= GetIDProcess('spm2.exe'); hProcess := OpenProcess(PROCESS_VM_WRITE or PROCESS_VM_OPERATION, False, ProcessID); WritenByte:= 10; WriteProcessMemory(hProcess, Pointer($004282A2), Pointer($004282A2), 2, WritenByte); CloseHandle(hProcess); end;
|
10 не записывается, появляется 64 вместо 10 Вот я и хотел узнать, как правильно использовать функцию. |