Показать сообщение отдельно
  #1  
Старый 20.03.2013, 16:10
DarkSmile DarkSmile вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию OpenProcess для XP

Здравствуйте! Написал следующий код для нахождения процесса:
Код:
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, но не знаю как можно это исправить, подскажите пожалуйста)
Ответить с цитированием