Поскольку ссылка, предоставленная vcldeveloper, сломана, вот полный функциональный код, который работает без сторонних компонентов.
Сначала мы найдем идентификатор процесса (PID), а затем мы получим дескриптор процесса, открыв все доступ (так как OP, упомянутый в комментариях, он понадобится для функции ReadProcessMemory).
Если функция ПИД возвращает значение 0, то это означает, что процесс, скорее всего, не работает (или просто не нашли в списке запущенных процессов)
function GetPIDbyProcessName(processName:String):integer;
var
GotProcess: Boolean;
tempHandle: tHandle;
procE: tProcessEntry32;
begin
tempHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
procE.dwSize:=SizeOf(procE);
GotProcess:=Process32First(tempHandle, procE);
{$B-}
if GotProcess and (procE.szExeFile <> processName) then
repeat GotProcess := Process32Next(tempHandle, procE);
until (not GotProcess) or (procE.szExeFile = processName);
{$B+}
if GotProcess then
result := procE.th32ProcessID
else
result := 0; // process not found in running process list
CloseHandle(tempHandle);
end;
Далее, мы получим/открыть дескриптор процесса из ПИД-код, который мы получили. Весь код/использование выглядит следующим образом:
var myPID, myProcessHandle: integer;
begin
myPID:=GetPIDbyProcessName('someExeName.exe');
myProcessHandle:=OpenProcess(PROCESS_ALL_ACCESS,False,myPID);
end;
Вы должны хранить myProcessHandle
таким образом, что для
, доступная ReadProcessMemory(myProcessHandle...)
в качестве первого параметра.
Кроме того, добавить их к своим глобальным использований статей:
Winapi.Windows
(для ReadProcessMemory и OpenProcess)
Winapi.tlHelp32
(для получения переменной PID tProcessEntry32)
Что «осилить окно ручки (HWND), модуль ручки? (HMODULE) или какой-нибудь другой дескриптор? –
дескриптор окна (HWND) – Bryan
Затем я также должен спросить: «В каком окне?» В одном приложении (EXE) может быть много окон, некоторые из которых могут быть даже невидимыми (даже не формы). «Главное» окно или окно «невидимое» «приложение»? –