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

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

Путь


Страницы:   1 2

Ivolg ©   (2007-07-17 14:47:00) 

Как можно узнать адресс файла, зная имя процесса ?


Юрий Зотов   (2007-07-20 12:26:00) [1]

> Ivolg ©   (20.07.07 10:42) [22]

Сразу бы так - простыми словами и без всяких терминов. Сколько бы времени сэкономили.

Но снова - "название процесса". Ну нет у процесса никаких названий, понимаете? Не-ту.

Ответ - см. [20] и [21].

Но вообще, в ТАКОЙ постановке эта задача ОДНОЗНАЧНОГО решения не имеет. Ведь никто не мешает запустить хоть сотню программ Test.exe из РАЗНЫХ папок - и если известно только имя файла Test.exe, то что в таком случае делать? Выдавать первый найденный процесс? Выдавать их все? Еще что-то?

Если список процессов Вы строите сами, то есть простое и точное решение - запоминать в этом же списке не только имена файлов, а еще и ID процессов. Тогда ничего не придется искать (поскольку ID прoцесса просто сразу берется из списка, а по нему сразу же определяется полное имя его исполнимого файла).


Ivolg   (2007-07-20 10:42:00) [2]

Инс ©   (20.07.07 09:23) [21]
Спасибо за помощь ! Буду пробовать !

Юрий Зотов ©   (19.07.07 22:43) [19]

Имеется список процессов, такой же как и в "Диспетчере задач" (вкладка "Процессы"), и нужно получить путь до файла процесса. Например запустили мы некую прогу Test.exe из папки C:\Windows\, прога загрузилась в память и
появилась в списке процессов, в данном случае имя программы соответствует имени процесса Test.exe, который отображен в списке процессов. Нужно определить по названию процесса, какой файл был запущен и где он находится. Понятно, что заранее неизвестно откуда программа была запущена. Вот вся суть задачи.


Инс   (2007-07-20 09:23:00) [3]

Ой, рано нажал отправить

2. Найти процесс, чей exename равен искомому
3. Запомнить идентификатор этого процесса
4. Открыть процесс с правами PROCESS_QUERY_INFORMATION
5. С помощью GetModuleFileNameEx и дескриптора, полученного в п.4. получить полный путь

Если программа твоя - Application.ExeName

Дерзай


Инс   (2007-07-20 09:20:00) [4]

Если программа чужая, то

1. С помощью ToolHelp получить список процессов


Юрий Зотов   (2007-07-19 22:43:00) [5]

> Ivolg ©   (19.07.07 22:09) [18]

1. Project1.exe - это не имя процесса. Еще раз - у процессов имен нет. У них есть хэндлы, приоритеты и еще куча всего, но имен у них нет.

2. Если Вы хотите получить правильный ответ на какой-то вопрос, то и вопрос, видимо, нужно тоже формулировать правильно. По крайней мере, не употребляя терминов, смысл которых Вам непонятен. Иначе только вводите всех в заблуждение и шансы на правильный ответ, соответственно, падают.

3. Уточните вопрос - Вам нужно определить полный путь к файлу Project1.exe из САМОЙ программы Project1.exe, или из какой-то ДРУГОЙ программы?


Ivolg   (2007-07-19 22:09:00) [6]

Инс ©   (19.07.07 20:11) [16]

GetModuleFileName работает не с хэндлом процесса, а с хэндлом исполняемого модуля - разные вещи.

Теперь что касается ответа на твой вопрос. Насколько я правильно телепатировал, у тебя есть только имя файла чужого процесса без пути, тебе нужно узнать путь. Так?


Да. У меня есть только имя процесса, мне нужно по этому имени процесса, определить местонахождение файла. Например, имя процесса Project1.exe, после определения должно показать путь файла, C:\Program Files\Borland\Delphi7\Projects\Project1.exe.


MsGuns   (2007-07-19 20:35:00) [7]

Юный хакер робко прячет цель свою в английских термах,
Он наивно полагает, будто ввел всех в заблужденье
Типа плохо сшитой фразой с кучей ляпов и описок

;)


Инс   (2007-07-19 20:11:00) [8]

GetModuleFileName работает не с хэндлом процесса, а с хэндлом исполняемого модуля - разные вещи.

Теперь что касается ответа на твой вопрос. Насколько я правильно телепатировал, у тебя есть только имя файла чужого процесса без пути, тебе нужно узнать путь. Так?


Pont   (2007-07-19 19:07:00) [9]

http://www.netcode.ru/cpp/zert995.htm


Ivolg   (2007-07-19 18:33:00) [10]

Может кто подскажет как правильно использовать функцию GetModuleFileName() ?


Anatoly Podgoretsky   (2007-07-17 20:55:00) [11]

> Ivolg  (17.07.2007 20:44:12)  [12]

Ошибаешься


Ivolg   (2007-07-17 20:44:00) [12]

Если я не ошибаюсь, функция FindWindow(); ищет дискриптор окна только по его заголовку.


Pont   (2007-07-17 20:27:00) [13]

Ivolg
FindWindow
Попробуй это для поиска дескриптора окна. Чтобы найти экзешник надо в GetModuleFileName() один из параметров указать 0.


Ivolg   (2007-07-17 19:34:00) [14]

Сори, неправельно написал )))) Мне необходимо узнать полный путь к .exe'шнику, зная только его имя процесса ! Можно с помощью функции
GetModuleFileName(), тогда как получить хендл процесса, используемый в первом параметре или я ошибаюсь ?


Ivolg   (2007-07-17 19:28:00) [15]

Сори, неправельно написал )))) Мне необходимо узнать полный путь к .exe'шнику, зная только его имя процесса !


Юрий Зотов   (2007-07-17 16:32:00) [16]

> Ivolg ©   (17.07.07 14:47)

У файла нет адреса. А у процесса нет имени.

Наверное, стоит уточнить вопрос?


Anatoly Podgoretsky   (2007-07-17 14:56:00) [17]

> Dib@zol  (17.07.2007 14:53:05)  [5]

Так форум же для начинающих, а он то к этому какое отношение имеет?


Сергей М.   (2007-07-17 14:53:00) [18]


> телепатор свой глюкавый


Я вижу.

По "пчелке".


Dib@zol   (2007-07-17 14:53:00) [19]

Удалено модератором


Dib@zol   (2007-07-17 14:51:00) [20]

Нее, просто телепатор свой глюкавый фклучил...


Страницы:   1 2

Наверх

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