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

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

!ПОЛНЫЙ! путь к .EXE через PID или его HANDLE - как? [Win2k]


Страницы:   1 2

Grundic ©   (2004-10-19 20:27:00) 

Есть проблема - надо убивать процессы, запущенные, допустим из C:\DANGEROUS\ и разрешать все другие, окромя тех, чей экзе-файл размером, например, 10000 KB. Или что-то в этом роде.

Вобщем, как получить путь к исходному exe-шнику по его процессу? szExeName (кажется так) не пойдет - он дает только имя приложения, не указывая - откуда оно родом.

ОЧЧЕНЬ надо. Заранее спасибо. (:


Grundic   (2004-10-21 21:03:00) [1]


> а то, что некие экземпляры пытаются самоутвердиться, используя
> на серьезном форуме такой жаргон


А Вы, типа, "отцы"?

PS: самоутверждатьсяи не пытаюсь, но разговор о себе, как о полном лошпенделе огорчает.


panov   (2004-10-21 18:47:00) [2]

>Digitman
>Игорь Шевченко

Хватит флеймить.


VMcL   (2004-10-21 18:44:00) [3]

Развели тут оффтоп...
%)


Игорь Шевченко   (2004-10-21 17:04:00) [4]

Digitman ©   (21.10.04 15:19) [28]

По мне так лучше дедами :) Мха я не замечал, а то, что некие экземпляры пытаются самоутвердиться, используя на серьезном форуме такой жаргон, говорит об их профессиональном уровне. Нам вроде самоутверждаться здесь ни к чему, а ? :))


Digitman   (2004-10-21 15:19:00) [5]


> Игорь Шевченко ©   (21.10.04 15:07) [27]


да фих его знает !

мож сейчас и "круто" "перцем" быть) ...

прохлопаем мы сейчас с тобой ушами, видишь ли, ан может и вовремя было бы "перцем" назваться ?) А ? ... Игорь ? ... Как оно тобой думается ? ... То ль в "перцы" податься, то ль остаться как есть ? .. Дедами замшелыми ?))))


Игорь Шевченко   (2004-10-21 15:07:00) [6]

Digitman ©   (21.10.04 14:19) [26]

Ну так мы ж тобой точно не должны :)


Digitman   (2004-10-21 14:19:00) [7]


> Игорь Шевченко ©   (21.10.04 13:21) [24]


ты - "перец" ?

я  - нет ..


> Grundic   (21.10.04 13:23) [25]
> 1я Заповедь: "Работает - не трогай!" :)


оно и не работало толком
видимость "работы" - да, была ...


Grundic   (2004-10-21 13:23:00) [8]


> считаешь, что кто-то должен за тебя разбираться ?


1я Заповедь: "Работает - не трогай!" :)
Пока что это мне не нужно. Хотя, я согласен, что я, возможно, не прав...


Игорь Шевченко   (2004-10-21 13:21:00) [9]

Digitman ©   (21.10.04 12:35) [23]


> считаешь, что кто-то должен за тебя разбираться ?


Перцы должны.


Digitman   (2004-10-21 12:35:00) [10]


> Не стал разбираться


> опять же, не разбирался - почему


считаешь, что кто-то должен за тебя разбираться ?

p.s.
использование для енумерации процессов ToolHelp-ф-ций под НТ ничем не оправдано... для этого есть PSAPI-функции или NtQuerySystemInformation()


WL   (2004-10-21 12:28:00) [11]

> Игорь Шевченко ©   (21.10.04 11:42) [21]

Спасибо за функцию, пока воспользуюсь ей


Игорь Шевченко   (2004-10-21 11:42:00) [12]


> А никто не подскажет, можно ли получить всю командную строку,
> т.е. имя exe-шника и параметры запуска?


http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip

модуль main.pas, функция HSGetWindowCommandLine


Grundic   (2004-10-21 11:41:00) [13]

Перцы! Нашел баг у себя в коде!!! Не стал разбираться - что да как.

Вот изменение процедуры:
Вместо

if hProcess<>0 then

поставил

if (hProcess<>0) and (s<>'System') then


При дебагинге под Дельфей это не важно, но при "автономном" запуске (опять же, не разбирался - почему) это райзило ОШИБКУ чтения памяти...


WL   (2004-10-21 11:34:00) [14]

Большое спасибо, буду пробовать


VMcL   (2004-10-21 11:23:00) [15]

> где почитать об этом...

Можно здесь:
http://podgoretsky.com/ftp/Docs/Classics/Richter/


VMcL   (2004-10-21 11:22:00) [16]

>> WL  (21.10.04 11:07) [16]

> А можно немного поподробнее, как вызвать GetCommandLine из чужого процесса

Внедрить DLL посредством SetWindowsHookEx или CreateRemoteThread. Тогда эта DLL будет работать в ВАП нужного процесса и там можно смело вызвать GetCommandLine. Далее с помощью любого удобного механизма межпроцессного взаимодействия передать полученную строку в базовый процесс. Ну и последнее: отключить Hook или остановить Remote Thread.


WL   (2004-10-21 11:07:00) [17]

Спасибо за советы, попробую через ReadProcessMemory, хотя хотелось бы чего-то более "цивилизованного".

> DeadMeat ©   (21.10.04 00:44) [14]
А можно немного поподробнее, как вызвать GetCommandLine из чужого процесса, или ссылочку, где почитать об этом...


VMcL   (2004-10-21 07:41:00) [18]

>> DeadMeat ©  (21.10.04 00:44) [14]

В принципе можно и через ReadProcessMemory.


DeadMeat   (2004-10-21 00:44:00) [19]

Насколько я знаю, GetCommandLine
Но не все так просто...
У Рихтера есть примерчик.

---
...Death Is Only The Begining...


Alex_Petr   (2004-10-20 18:24:00) [20]

ReadProcessMemory ?


Страницы:   1 2

Наверх

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