powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / текущая директория
8 сообщений из 8, страница 1 из 1
текущая директория
    #34413923
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос может быть и немного выходит за рамки раздела, но задам его здесь.

в с++ есть такое понятие как "текущая директория", ее можно получать и задавать функцииями типа GetCurrentDir() и SetCurrentDir().

проблема возникла в следующем, есть 2 приложения, первое запускается сразу за вторым. каким образом сделать так, чтобы 1ое (написаное на билдере, исходники его можно редактировать) в конце своей работы устанавливало "текущую директорию" , а 2ое (его пофиксить уже никак нельзя, оно вроде написано на делфях) - в котором есть стандартные вещи типа opendialog, считало initial directory как раз ту "текущую директорию", которую в конце своей работы установило 1ое приложение.

где копать? есть подозрения на реестр, но выжать из него ничего не смог..

еще раз повторю, если бы можно было менять исходники обоих приложений - вопрос решался бы очень просто , например, записью текущей директории в файл. в моем случае я второе приложение изменять не могу.
...
Рейтинг: 0 / 0
текущая директория
    #34413929
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS. как показали практические исследования функция SetCurrentDir()работает только для текущего приложения. на второе она никак не влияет :(
...
Рейтинг: 0 / 0
текущая директория
    #34413934
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как запускается второе приложение?
...
Рейтинг: 0 / 0
текущая директория
    #34413987
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не знаю нужны ли эти подробности, но схема такая:

оба приложения вызываются неким скриптом: 1ое - exec-ом, 2ое - ввиде функции из dll.
...
Рейтинг: 0 / 0
текущая директория
    #34413989
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати в описании проблемы ошибка, не первое запускается за вторым, а конечно наоборот :)
...
Рейтинг: 0 / 0
текущая директория
    #34414007
grieg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первое переходит в директорию, из которой должно стартовать второе, и запускает второе.
в чем проблема?
...
Рейтинг: 0 / 0
текущая директория
    #34414014
SNVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напиши немного по другому:

Код второго приложения я изменять не могу! (соответственно и передать ему ничего я не могу - если речь идет о параметрах, и сделать чтобы оно брало данные из реестра тоже не могу - ибо надо изменять код).

Но во втором приложении есть opendialog, у которого не прописана "инишиал директория". Посему и вопрос, откуда по умолчанию оно черпает инишиал директорию для opendialoga (например, какая то ячейка в реестре), хочется узнать это место и писать туда первым приложением нужную директорию.
...
Рейтинг: 0 / 0
текущая директория
    #34416643
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNVIв с++ есть такое понятие как "текущая директория",К С++ это не относится. Это относится к процессам, ОС и файловым системам.

SNVIв котором есть стандартные вещи типа opendialog, считало initial directory как раз ту "текущую директорию", которую в конце своей работы установило 1ое приложение.Никак это снаружи не установить. И к текущей директории это никак не относится.
Стандартный виндовый диалог GetOpenFileName действительно может использовать текущий каталог процесса, но только в одном случае из шести. Подробнее читай MSDN.

SNVIгде копать? есть подозрения на реестр, но выжать из него ничего не смог..Ну-ну, нашел где копать.

SNVIНо во втором приложении есть opendialog, у которого не прописана "инишиал директория". Посему и вопрос, откуда по умолчанию оно черпает инишиал директорию для opendialoga (например, какая то ячейка в реестре), хочется узнать это место и писать туда первым приложением нужную директорию.GetOpenFileName получает один параметр - структуру OPENFILENAME, и начальная директория формируется из полей lpstrFile и lpstrInitialDir, по закону:
MSDN lpstrInitialDir
Pointer to a NULL terminated string that can specify the initial directory. The algorithm for selecting the initial directory varies on different platforms.

Windows 2000/XP:
If lpstrFile contains a path, that path is the initial directory.

Otherwise, lpstrInitialDir specifies the initial directory.

Otherwise, if the application has used an Open or Save As dialog box in the past, the path most recently used is selected as the initial directory. However, if an application is not run for a long time, its saved selected path is discarded.

If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.

Otherwise, the initial directory is the personal files directory of the current user.

Otherwise, the initial directory is the Desktop folder.

Windows 98/Me:

lpstrInitialDir specifies the initial directory.

If lpstrInitialDir is NULL and lpstrFile contains a path, that path is the initial directory.

Otherwise, if the current directory contains any files of the specified filter types, the initial directory is the current directory.

Otherwise, the initial directory is the personal files directory of the current user.

Earlier versions of Windows and Windows NT:

lpstrInitialDir specifies the initial directory.

If lpstrInitialDir is NULL and lpstrFile contains a path, that path is the initial directory.

Otherwise, the initial directory is the current directory.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / текущая директория
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]