|
|
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
вопрос может быть и немного выходит за рамки раздела, но задам его здесь. в с++ есть такое понятие как "текущая директория", ее можно получать и задавать функцииями типа GetCurrentDir() и SetCurrentDir(). проблема возникла в следующем, есть 2 приложения, первое запускается сразу за вторым. каким образом сделать так, чтобы 1ое (написаное на билдере, исходники его можно редактировать) в конце своей работы устанавливало "текущую директорию" , а 2ое (его пофиксить уже никак нельзя, оно вроде написано на делфях) - в котором есть стандартные вещи типа opendialog, считало initial directory как раз ту "текущую директорию", которую в конце своей работы установило 1ое приложение. где копать? есть подозрения на реестр, но выжать из него ничего не смог.. еще раз повторю, если бы можно было менять исходники обоих приложений - вопрос решался бы очень просто , например, записью текущей директории в файл. в моем случае я второе приложение изменять не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 12:46 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
PS. как показали практические исследования функция SetCurrentDir()работает только для текущего приложения. на второе она никак не влияет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 13:00 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
Как запускается второе приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 13:05 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
не знаю нужны ли эти подробности, но схема такая: оба приложения вызываются неким скриптом: 1ое - exec-ом, 2ое - ввиде функции из dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 14:34 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
кстати в описании проблемы ошибка, не первое запускается за вторым, а конечно наоборот :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 14:36 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
первое переходит в директорию, из которой должно стартовать второе, и запускает второе. в чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 14:57 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
Напиши немного по другому: Код второго приложения я изменять не могу! (соответственно и передать ему ничего я не могу - если речь идет о параметрах, и сделать чтобы оно брало данные из реестра тоже не могу - ибо надо изменять код). Но во втором приложении есть opendialog, у которого не прописана "инишиал директория". Посему и вопрос, откуда по умолчанию оно черпает инишиал директорию для opendialoga (например, какая то ячейка в реестре), хочется узнать это место и писать туда первым приложением нужную директорию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 15:16 |
|
||
|
текущая директория
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 19:08 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34416643&tid=2029178]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 482ms |

| 0 / 0 |
