2010-06-30 8 views
0

Я хочу получить дескриптор процесса по имени процесса.получить дескриптор процесса с помощью PID

У меня есть PID, но когда я использую openProcess получить дескриптор всегда будет возвращать 0 или 180, функцию, которую я использую, чтобы получить PID работает правильно

Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PID);

Что я должен делать?

+0

Почему вы проверяете значение ручки? Это не значение перекрестного процесса, это генерируется API OpenProcess. 180, возможно, просто действительный дескриптор открытого процесса. Вы пытались использовать дескриптор, кроме как определить его числовое значение? –

+0

Я хочу получить ручку, я не нашел решения, чтобы получить ее напрямую – sam

+2

Я просто хочу это, получить дескриптор процесса по его имени – sam

ответ

7

Нет прямого способа получить дескриптор процесса, когда все, что вам известно, это его имя, если вы не используете CreateProcess.

Вместо этого вы можете использовать CreateToolhelp32Snapshot, Process32First и Process32Next для поиска всех процессов, имеющих нужное имя. Имейте в виду, что может быть несколько процессов с тем же именем. Эти функции расскажут вам идентификатор процесса. Как только вы это сделаете, вы можете использовать OpenProcess, как вы уже продемонстрировали. Если OpenProcess возвращает что-то отличное от нуля (например, 180), то оно дало вам действительный дескриптор процесса.

+0

U означает, что дескриптор процесса не уникален? поэтому 2 процесса, которые выполняются, могут иметь два PID и один дескриптор? – sam

+3

Я не знаю, как вы пришли к такому выводу из того, что я написал в своем ответе. Во всяком случае, процесс может иметь много ручек, открытых для него. Вы можете вызвать OpenProcess дважды на одном PID, и вы должны получить два разных числовых значения - две ручки, один процесс. Вы можете вызывать OpenProcess на одном PID из двух разных программ, и вы можете получить два разных значения, или вы можете получить одинаковое значение в каждой программе, но это все еще две разные ручки. –

+0

ok THX MR Kennedy – sam

Смежные вопросы