|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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, но не знаю как можно это исправить, подскажите пожалуйста) Последний раз редактировалось DarkSmile, 20.03.2013 в 16:14. |