Здравствуйте! Написал следующий код для нахождения процесса:
Код:
Function PId(Exename:string):Dword;
var snap:DWORD;
pe:TprocessEntry32;
begin
result:=0;
snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if snap <>INVALID_HANDLE_VALUE then begin
pe.dwSize:=sizeof(TPROCESSENTRY32);
if process32First(snap,pe) then
repeat
if pe.szExeFile=exename then begin
result:=pe.th32ProcessID;
closehandle(snap);
exit;
end;
until not process32Next(snap,pe);
closehandle(snap);
result:=0;
end;
end;
function OpenProc(id:integer):boolean;
var
hProcess:THandle;
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,id);
if hProcess = 0 then begin
ShowMessage('Процесс не найден');
end else
ShowMessage('Процесс ok!');
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenProc(PId('calc.exe'))
end;
На Windows 7 все работает отлично, но на Windows XP почему то не находит процесс. Точнее я знаю почему, типа xp не дружит с PROCESS_ALL_ACCESS, но не знаю как можно это исправить, подскажите пожалуйста)