Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как по ProcessHandle получить ProcessID [D5, D6, D7, Win2k, WinXP]


Страницы:   1 2

xAnjel ©   (2005-01-02 19:42:00) 

перебор всех ID и получение по них Handle не предлагать

MessageBox(0,PChar(Int2Str(OpenProcess(PROCESS_TERMINATE,False,GetCurrentProcessID))),'Generated1',0);
MessageBox(0,PChar(Int2Str(OpenProcess(PROCESS_ALL_ACCESS,False,GetCurrentPocessID))),'Generated2',0);
MessageBox(0,PChar(Int2Str(OpenProcess(PROCESS_TERMINATE,False,GetCurrentPocessID))),'Generated3',0);
MessageBox(0,PChar(Int2Str(OpenProcess(PROCESS_ALL_ACCESS,False,GetCurrentPocessID))),'Generated4',0);

все разные значения будут!!!

CloseHandle делать нельзя.


xAnjel   (2005-01-07 15:51:00) [1]

>> а как ты по ID определишь имя?
там перебор какраз пойдет.


kaZaNoVa   (2005-01-07 11:50:00) [2]

Piter ©   (06.01.05 23:54) [28]
банальным перебором =_))


Piter   (2005-01-06 23:54:00) [3]

xAnjel ©   (06.01.05 23:03) [27]
да, по ид опредилю имя


а как ты по ID определишь имя?


xAnjel   (2005-01-06 23:03:00) [4]

да, по ид опредилю имя, а там дальше все ясно, что за процесс и что с ним делать надо.


Piter   (2005-01-06 16:49:00) [5]

ну вот знаешь ты ID процесса. И что, тебе легче от этого становится что ли?


xAnjel   (2005-01-06 16:08:00) [6]

ну просто знать что за процесс, его имя или ID


Piter   (2005-01-06 15:13:00) [7]

Игорь Шевченко ©   (06.01.05 12:25) [23]
Какого процесса ?


ну я так понимаю какого угодно

xAnjel ©   (06.01.05 11:24) [22]
Передали Handle процесса, а чтобы моя dll с ним чтото сделала, надо сначало разобратса что за процесс


что значит разобраться? Какую информацию ты хочещь узнать и какие функции будешь применять?


Игорь Шевченко   (2005-01-06 12:25:00) [8]


> Есть процесс (стороний, сделанный не автором), который загружает
> DLL и передает ей а какую-то функцию Handle процесса


Какого процесса ?


xAnjel   (2005-01-06 11:24:00) [9]

>> Поэтому логичный вопрос - а нафига нужен ID процесса?
Передали Handle процесса, а чтобы моя dll с ним чтото сделала, надо сначало разобратса что за процесс (имя или ID).

GuAV - спасибо за getprocessid.


GuAV   (2005-01-05 19:57:00) [10]

Piter ©   (05.01.05 19:42) [20]
Поэтому логичный вопрос - а нафига нужен ID процесса?

CreateToolhelp32Snapshot, например, чтобы перечислить thread ID.
Или может у того хендла прав не хватает :-)


Piter   (2005-01-05 19:42:00) [11]

kaZaNoVa ©   (05.01.05 17:52) [18]

потому что обе функции недокументированы

Игорь Шевченко ©   (05.01.05 16:14) [13]
Ерунда. Handle процесса имеет смысл только для текущего процесса, следовательно, где-то должна быть вызвана функция OpenProcess


я тоже сначала так понял. А потом я кажется понял, что имел в виду автор.

Есть процесс (стороний, сделанный не автором), который загружает DLL и передает ей а какую-то функцию Handle процесса. А вот DLL уже пишет автор. Не он определяет что будет передаваться в DLL, перед ним типа ТЗ стоит.

Лично я считаю, что лучше договориться с тем, кто пишет саму программу, чтобы в DLL передавалось именно Id процесса.

С другой стороны, что нужно сделать с процессом? Если тот же Terminate, то вполне можно обойтись и Handle'ом. Многие функции WinApi работают именно с описателем процесса. Поэтому логичный вопрос - а нафига нужен ID процесса?


GuAV   (2005-01-05 17:56:00) [12]

Игорь Шевченко ©   (05.01.05 17:44) [17]

Против всех ? ;-)


kaZaNoVa   (2005-01-05 17:52:00) [13]

Игорь Шевченко ©   (05.01.05 17:44) [17]
почему?


Игорь Шевченко   (2005-01-05 17:44:00) [14]

kaZaNoVa ©   (05.01.05 17:13) [16]

Оба варианта плохи.


kaZaNoVa   (2005-01-05 17:13:00) [15]

Игорь Шевченко ©   (05.01.05 17:04) [15]
а что лучше,   Nt... или Zw..  ?


Игорь Шевченко   (2005-01-05 17:04:00) [16]

GuAV ©   (05.01.05 16:21) [14]

Да, разумное дополнение, спасибо.
Тогда Nt(Zw)QueryInformationProcess для Nt-систем.

С уважением,


GuAV   (2005-01-05 16:21:00) [17]


> следовательно, где-то должна быть вызвана функция
> OpenProcess, значит, там и его ID известен.

Не обязательно. OpenProcess - один из способов получить хэндл процесса. Он мог быть получен для данного процесса вызовом DuplicateHandle из другого процесса.


Игорь Шевченко   (2005-01-05 16:14:00) [18]


> >  в ф-цыю передаетса хендл процесса (любого)


Ерунда. Handle процесса имеет смысл только для текущего процесса, следовательно, где-то должна быть вызвана функция OpenProcess, значит, там и его ID известен. Если DLL подгружена к процессу, то GetCurrentProcessId


GuAV   (2005-01-04 16:21:00) [19]

GrayFace ©   (04.01.05 16:09) [11]

Будет. но

>  в ф-цыю передаетса хендл процесса (любого)


ps: похоже, нужна ф-ция NtQueryInformationProcess


GrayFace   (2005-01-04 16:09:00) [20]

А, разве, процесс, подгрузивший DLL, не будет для нее CurrentProcess-ом?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо