2009-09-12 51 views
1

FileDialog(OpenFileDialog/SaveFileDialog)使用哪個目錄?
當我從我的應用程序中顯示它時,它會打開不是Environment.CurrentDirectory文件夾的文件夾。 我怎樣才能得到這個目錄路徑?或者它由操作系統控制,我不知道它?FileDialog使用哪個目錄?

回答

0

您可以使用OpenFileDialog的「InitialDirectory」屬性進行設置。

+1

問題不是「如何設置它」,而是「如何獲取它」...... InitialDirectory屬性是空的,直到它被調用代碼設置爲 – 2009-09-12 23:45:04

2

根據MSDN:

在Windows Vista中,如果InitialDirectory 設置爲一個完整的文件名,而不是 只是一個目錄路徑,初步 目錄將默認無論對 應用程序的路徑,或到用戶最後選擇 文件的目錄 。

否則它似乎沒有說什麼,對我來說它看起來像Environment.SpecialFolder.MyDocuments,我使用Vista。

1

此信息以註冊表形式存儲在每個應用程序的基礎上,因此您應該可以檢索它。我不記得確切的註冊表位置,我會盡力找到它...

編輯:

在Windows7中,它存儲在HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Explorer中\ COMDLG32 \ LastVisitedPidlMRU

值名字只是數字,內容是一些二進制格式編碼的,所以它可能不是很容易閱讀...

0

你可以做一個的extern調用GetOpenFileName功能看什麼最初的OPENFILENAME結構商店(看着lpstrInitialDir)。

從MSDN:lpstrInitialDir
指向可以指定初始目錄的以NULL結尾的字符串的指針。

你也可以查看以下注冊表項: HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ Explorer中\ COMDLG32 \ LastVisitedMRU \

有一個名爲MRUList與名爲二進制索引的順序的字符串值值。如果您在MRUList中打開第一個索引的二進制值(無論它是哪個字母),您將看到應用程序的名稱和目錄。

編輯:你可能會發現code在這個討論的底部有用,如果你想手動設置/獲取它。

+0

如果我調用GetOpenFileName,則對話框會出現。我只需要知道什麼目錄是我的應用程序的「當前目錄」。 – nightcoder 2009-09-13 09:46:38

0

如何查看顯示它的方法的源代碼,並查看它使用的是什麼字符串?

+0

沒有VS安裝在這裏,否則我會爲你做。 – GR7 2009-09-13 03:37:34

+0

它只是調用GetOpenFileName的winapi函數。而且,如果函數內部決定哪個文件夾將在OPENFILENAME.lpstrInitialDir結構成員中爲空,那麼該函數似乎就會初始化一個文件夾。 – nightcoder 2009-09-13 09:50:08

相關問題