簡體   English   中英

Delphi TOpenDialog / TSaveDialog最后使用的路徑

[英]Delphi TOpenDialog/TSaveDialog last used path

請將我的問題提到這個答案: https//stackoverflow.com/a/4016075/698266 ,特別是第3步說“否則,如果應用程序過去使用過打開或另存為對話框,那么最近使用的路徑被選為初始目錄。“

Windows在哪里保存這些信息?

注意:通過實驗,它似乎鏈接到應用程序文件名而沒有其路徑 - 即在不同目錄中復制的相同可執行文件“看到”相同的最后路徑信息,而更改exe文件名使對話框指向用戶的文檔目錄。

我的實際興趣是用於測試目的。 我需要“重置”此信息,以便在類似於第一次運行的條件下測試我的應用程序。

Windows XP使用HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedMRU ,每個項目的格式似乎是ExeFilename + Path,兩個字符串都以零終止並采用UTF-16LE格式。 MRU列表存儲為名為MRUList的字符串。

WinXP注冊

較新版本的Windows使用HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRUHKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRULegacy ,格式似乎是ExeFilename + ItemIdList (UTF-16LE中的ExeFilename)零終止)。 MRU列表似乎是名為MRUListEx的二進制值中的MRUListEx列表,列表由0xffffffff終止。

我認為改變發生在Vista中,因為這是添加新的IFileDialog的時候。 當使用自定義模板和/或鈎子函數調用GetOpen / SaveFileName時,可能會使用LastVisitedPidlMRULegacy。

我終於找到了答案。

對於Windows 10(在不同版本的Windows中可能會有所不同,正如David指出的那樣),注冊表中有一個值列表,用於跟蹤可執行文件名及其相關的最后“訪問”路徑。

該列表可在此密鑰中找到:

HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\LastVisitedPidlMRU

要重置特定程序的默認打開/保存路徑,您必須找到其數據字符串(UNICODE)以可執行文件名開頭的值並將其刪除。 如果你看數據字符串,你會發現最后一個使用的路徑在可執行文件名之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM