.net windows api: получить или установить самый последний каталог, используемый диалогом открытия файла - PullRequest
3 голосов
/ 12 декабря 2010

Есть ли способ установить или получить начальный каталог, используемый в диалоговом окне открытия файла Vista, без установки свойства InitialDirectory в диалоговом окне открытия файла?

Я хочу, чтобы мой WPF (при запуске) устанавливал папку по умолчанию один раз для всех диалогов открытия / сохранения. Если вы заметили в Vista, пока машина работает, она по умолчанию продолжает / отслеживает последний выбранный каталог пользователя из любого файла, который открывается / сохраняется как диалоги. Блокнот или любые другие программы действуют таким образом.

Причина, по которой я пытаюсь это сделать, заключается в том, что я не хочу отслеживать это в своем приложении, настраивая и сохраняя папку. Я просто хотел бы установить значение по умолчанию и позволить Vista отслеживать его после этого.

Directory.SetCurrentDirectory не делает этого.

Ответы [ 2 ]

3 голосов
/ 12 декабря 2010

Вы исключаете именно то, что вам нужно сделать, чтобы решить вашу проблему. Если вы не установили InitialDirectory, тогда диалог использует последний использованный каталог. Эта информация хранится в реестре, индексируется по имени процесса. Вы не можете выборочно отключить это поведение.

Используемый раздел реестра изменялся в зависимости от версии Windows. Я думаю, что на Win7 это теперь HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedPidlMRU. Это больше не в открытом тексте, как это было в более ранних версиях. Если вы хотите рискнуть проанализировать значения ключей, перечисленные там, убедитесь, что вы проверили версию Windows. Честно говоря, это не стоит простого кода, который вам нужно написать для инициализации свойства InitialDirectory.

0 голосов
/ 12 декабря 2010

Если вы не хотите писать код для загрузки и сохранения каталога для OpenFileDialog, напишите функцию-обертку, которая делает это, а затем просто вызовите функцию-обертку ...

...