![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Путь, откуда был вызван exe [D7, Win2k]
DimonNew © (2004-08-26 12:16:00)Привет, подскажите пож-та. Один exe файл вызвает второй. Как можно в исходном коде второго экзешнике узнать путь, откуда был вызван первый?
Digitman (2004-08-26 12:49:00) [1]
> DimonNew (26.08.04 12:30) [4]
можно внедрить в АП 1-го ехе код, перехватывающий вызов CreateProcess
как только код перехвата обнаружит, что вызвана ф-ция CreateProcess, запустивший 2-й ехе, этот 2-й ехе немедленно извещается об интересующей его инфе через любой механизм интерпроцессной передачи инф-ции, например, MMF
DimonNew (2004-08-26 12:48:00) [2]Спасибо большое за помощь!!!
Rule (2004-08-26 12:45:00) [3]можешь поискать в принципе решение через винапи, тоесть во втором приложении ищешь процесс и узнаешь путь запуска этого процесса, только вариант действителен если первых приложений только одно, а если запустить 2 с разных мест, то хуже
clickmaker (2004-08-26 12:36:00) [4]
> [4] DimonNew (26.08.04 12:30)
> Но эта главная программа может быть в разных каталогах
Тогда при установки этой кучи на каждую машину, где-нить в реестре прописать путь к главной, в исходники второй вставить чтение из реестра
DimonNew (2004-08-26 12:30:00) [5]Я то понял, извини Spy, что ввел тебя в замешательство.
Одна программа вызывает кучу разных программ, и передает им параметры, но пути там нет. Исходные коды этой "кучи" программ есть, а у главной нет. Но эта главная программа может быть в разных каталогах, а "куча" программ толко в одном. Вот я и хотел спросить, что спросил.
Rule (2004-08-26 12:30:00) [6]этого он никогда не узнает
тебе надо при вызове второго приложения первым после его открытия передать как хочешь параметр пути первого, как это узнать я думаю знаешь, если нет то extractfilepath(Application.ExeName)
clickmaker (2004-08-26 12:21:00) [7]Если в виде параметра не передашь, то не узнаешь
SPy (2004-08-26 12:21:00) [8]:) Во закрутил-то :) Ты сам понял что написал?
Это что значит:
"откуда был вызван первый"? :) Сформулирую ТОЛКОВО!
Digitman (2004-08-26 12:21:00) [9]Самый простой вариант - передать 2-му ехе при его запуске строковый параметр, отражающий путь запуска 1-го ехе .. 2-й ехе после запуска получает этот параметр обращением к ф-ции ParamStr(1)