回答
我該如何保持默認的當前目錄?
如果你讀了OPENFILENAME
documentation,存在對確切目的的OFN_NOCHANGEDIR
標誌:
,恢復當前目錄到其原始值,如果用戶改變了目錄,而搜索文件。
儘管文檔聲明,該標誌在GetOpenFileName()
支持。
也看到在這個問題上Raymond Chen的博客文章:
Why does the common file dialog change the current directory?
呵呵。該文件說,該標誌會導致當前目錄恢復到其原始值,但雷蒙德的文章說,它會阻止當前目錄被更改;你真的知道實際上發生了什麼嗎? (當然,這對單線程程序無關緊要。) –
我閱讀文章,我不復制粘貼示例代碼。我無視它,因爲它表示它不會有任何效果。我應該記得winapi doc是一個嚴重寫作文檔的絕對例子。 – Malina
當關閉對話框時,'OFN_NOCHANGEDIR'恢復原始工作目錄。當用戶在對話框內圍繞文件系統導航時,該對話框仍然可以更改工作目錄。 –
當前目錄存在,因爲它對命令行工具非常方便。它通常不太用於GUI應用程序,這可能是爲什麼微軟的開發人員不擔心允許GetOpenFileName()更改它。當然偶爾有一個邊緣案例,你可能正在處理其中的一個問題,雖然很難從你的問題中得出結論。 (你真的確認你想要的當前目錄,而不是,例如,包含你可執行文件的目錄?)
無論如何,如果你做要在當前目錄下,最安全的方法是將其恢復爲程序啓動後,使用該保存的值構建完全限定的路徑。不要只是在您認爲可能發生更改時恢復原始當前目錄,請自行構建完全限定路徑。這在多線程代碼或將來可能需要多線程的代碼中(例如,幾乎所有內容)尤其重要,但它也消除了忽略當前目錄可能更改的一個或多個代碼路徑的風險。
- 1. 更改當前目錄
- 2. Users/username/Library目錄會發生什麼變化。爲什麼我無法更改當前目錄?
- 3. 將工作目錄更改爲當前腳本的目錄
- 4. 爲什麼我不能更改目錄
- 5. 爲什麼QFileDiaglog方法目錄不顯示當前目錄?
- 6. .net OpenFileDialog更改當前目錄
- 7. 無法更改當前工作目錄
- 8. 如何更改當前工作目錄
- 9. 如何更改SBCL的當前目錄?
- 10. 更改節點的當前目錄
- 11. 更改FileSystemObject的當前目錄
- 12. 更改PHP的當前目錄
- 13. 爲什麼當前目錄不是目標\ classes?
- 14. SWI Prolog更改工作目錄/獲取當前工作目錄?
- 15. 將工作目錄更改爲當前打開的文件
- 16. 使用PHP __DIR__常量可以將當前目錄更改爲父目錄嗎?
- 17. 當在Windows XP中使用打開文件對話框時,爲什麼當前工作目錄更改?
- 18. 爲什麼我的Ruby路徑上沒有當前目錄?
- 19. 爲什麼打印回溯時Python從當前目錄讀取?
- 20. 爲什麼PowerShell中的.NET對象不使用當前目錄?
- 21. 爲什麼不在當前工作目錄中打開choose.files()?
- 22. 爲什麼我得到錯誤的當前目錄在linux
- 23. 爲什麼Jenkins不能將腳本更改爲目錄?
- 24. 將vim當前工作目錄設置爲當前項目根目錄或當前文件的目錄
- 25. 當前目錄
- 26. 將LOCAL_SDK_VERSION更改爲當前。有什麼問題嗎?
- 27. 查找當前目錄和子目錄包括當前目錄
- 28. 的Mac終端目錄更改爲當前的前取景器窗口
- 29. 如何將PHP中的目錄更改爲當前登錄的用戶路徑
- 30. 爲什麼我的datagridviewcolumn目前不接受更改?
通過保存它,然後還原它,一旦調用返回。雖然這可以回答你的問題,但是你真正應該做的事情並不是完全依賴於當前的工作目錄。你剛剛經歷了一個原因,爲什麼。 – IInspectable
我需要在本地目錄中快速創建文件,因爲來自同一目錄的另一個程序只能打開本地文件,這就是兩個程序之間相互通信的方式。謝謝你的方式。 – Malina
那麼,繼續創建你需要的所有文件。爲什麼堅持,這需要依靠當前的工作目錄,儘管? – IInspectable