Какой каталог использует FileDialog? - PullRequest
1 голос
/ 13 сентября 2009

Какой каталог использует FileDialog (OpenFileDialog / SaveFileDialog)?
Когда я показываю его из моего приложения, он открывает папку, которая не является папкой Environment.CurrentDirectory. Как я могу получить этот путь к каталогу? Или это контролируется ОС, и я не могу этого знать?

Ответы [ 5 ]

2 голосов
/ 13 сентября 2009

По данным MSDN:

В Windows Vista, если InitialDirectory устанавливается полное имя файла вместо просто путь к каталогу, начальный каталог будет по умолчанию либо путь к приложению или к каталогу из которого пользователь последний раз выбирал файл.

В противном случае, похоже, ничего не сказано, для меня это выглядело как Environment.SpecialFolder.MyDocuments, я использую Vista.

1 голос
/ 13 сентября 2009

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

EDIT:

В Windows7 оно хранится в HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedPidlMRU

Имена значений - это просто числа, а содержимое закодировано в некотором двоичном формате, поэтому его, вероятно, не очень легко прочитать ...

0 голосов
/ 13 сентября 2009

Как насчет взглянуть на исходный код метода, который его показывает, и посмотреть, какую строку он использует?

0 голосов
/ 13 сентября 2009

Вы можете сделать внешний вызов функции GetOpenFileName , чтобы увидеть, что хранит исходная структура OPENFILENAME (глядя на lpstrInitialDir).

Из MSDN: lpstrInitialDir
Указатель на завершенную NULL строку, которая может указывать начальный каталог.

Вы также можете проверить следующий раздел реестра: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedMRU \

Существует строковое значение с именем MRUList с порядком индексов, присвоенных двоичному значению. Если вы откроете двоичное значение первого индекса (какой бы оно ни было) в MRUList, вы увидите имя вашего приложения и каталог.

РЕДАКТИРОВАТЬ: Возможно, вы найдете код в нижней части этого обсуждения полезным, если вы пытаетесь установить / получить его вручную.

0 голосов
/ 13 сентября 2009

вы можете установить его с помощью свойства "InitialDirectory" OpenFileDialog.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...