2012-05-09 131 views
2

是否可以將文件對話框(打開/保存)限制爲特定文件夾爲winapi?如何將FileDialog限制到特定路徑

OPENFILENAME fileDialogSettings; 
... 
fileDialogSettings.lpstrInitialDir = "Some path"; 
... 
if(GetOpenFileName(&fileDialogSettings)) 
{ 
} 

我希望能有「一些路徑」的對話框中的根路徑和限制導航到該文件夾​​,它僅是子文件夾。我可以用lpfnHook來做這個嗎?

回答

2

如果您僅針對Vista +,則可以使用IFileDialogEvents::OnFolderChanging方法完全阻止更改。

對於較早版本的Windows,OpenFileDialog允許您指定一個鉤子程序,您可以在該程序中獲取CDN_FOLDERCHANGE通知。 雖然我看不到任何消息來禁止更改,但您也許可以發佈消息來告訴它「返回」,或者只是禁用「確定」按鈕。

另一種選擇是處理CDN_FILEOK通知並拒絕所需目錄之外的路徑。

請參閱this MSDN article瞭解有關鉤子程序的更多細節。 This question也提到在打開的對話框中更改目錄。

0

查找到OFN_NOCHANGEDIR標誌,雖然文件說,這樣的:

,恢復當前目錄到其原始值,如果用戶 改變了目錄,而搜索文件。

此標誌對GetOpenFileName無效。

編輯:重讀你的問題,我想你不希望用戶從該目錄導航了,不知道這是可能的GetOpenFileName,你可能要與一個目錄列表創建自己的對話框以這種方式查看和限制他們。

相關問題