![]() |
|
|
![]()
|
|
| slavic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.2.2007 Репутация: нет Всего: нет |
вопрос может быть и немного выходит за рамки раздела, но задам его здесь.
в с++ есть такое понятие как "текущая директория", ее можно получать и задавать функциями типа GetCurrentDir() и SetCurrentDir(). проблема возникла в следующем, есть 2 приложения, второе запускается сразу за первым. каким образом сделать так, чтобы 1ое (написаное на билдере, исходники его можно редактировать) в конце своей работы устанавливало "текущую директорию" , а 2ое (его пофиксить уже никак нельзя, оно вроде написано на делфях) - в котором есть стандартные вещи типа opendialog, считало initial directory как раз ту "текущую директорию", которую в конце своей работы установило 1ое приложение. где копать? есть подозрения на реестр, но выжать из него ничего не смог.. еще раз повторю, если бы можно было менять исходники обоих приложений - вопрос решался бы очень просто , например, записью текущей директории в файл. в моем случае я второе приложение изменять не могу. PS. как показали практические исследования функция SetCurrentDir()работает только для текущего приложения. на второе она никак не влияет :( Это сообщение отредактировал(а) slavic - 25.3.2007, 13:38 |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Если я тебя правильно понял, то тебе нужно, чтобы первое приложение определяло рабочию директорию второй программы. Тогда можно использовать глобальные переменные и прочее(об этом можешь почитать в FAQ). Но проще всего - этот либо файл, из которого будет браться эта директория, либо старый добрый реестр).
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| slavic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.2.2007 Репутация: нет Всего: нет |
Klin, насколько я понимаю не подойдет.
Так как код второго приложения я изменять не могу! (соответственно и передать ему ничего я не могу - если речь идет о параметрах, и сделать чтобы оно брало данные из реестра тоже не могу - ибо надо изменять код). Но во втором приложении есть opendialog, у которого не прописана "инишиал директория". Посему и вопрос, откуда по умолчанию оно черпает инишиал директорию для opendialoga (например, какая то ячейка в реестре), хочется узнать это место и пистаь туда первым приложением нужную директорию. Это сообщение отредактировал(а) slavic - 25.3.2007, 13:44 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
slavic, единственое, что здесь можно предложить - это перехват API в целевом приложении(а именно GetOpenFileName и правка управляющей структуры передаваемой параметром в эту функцию)
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| slavic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.2.2007 Репутация: нет Всего: нет |
W4FhLF, а может вы мне поможете кодом, которым должно завершаться
1ое приложение, чтобы второе считало текущую директорию 1го своей текущей? А то ваши объяснения для меня еще слишком суровы |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
slavic, нет, помочь не могу, т.к. на Borland C++ я не пишу, но перехвату api материалов множество и эта тема регулярно обсуждается на форуме.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Неплохая задачка
Могу сказать точно, что первая программа не должна закрываться перед второй. Первая в процессе выполнения программы должна перехватывать появление диалога открытия файла и менять путь. Или в компоненте аторой программы изменять этот путь. Есть API команды: GetCurrentDirectory и SetCurrentDirectory (о них можешь почитать в хелпе). Но на директорию OpenDialog они не влияют. Поэтому задачка не слишком быстро решается... з.ы. опиши подробней вторую программу -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |