簡體   English   中英

從Windows資源管理器中打開dpr文件時,Delphi 7 Windows 7無法設置活動目錄

[英]Delphi 7 Windows 7 Can't set active direcory, when a dpr file is opened from windows explorer

我曾經從Windows資源管理器中打開Delphi 7 dpr文件。 Delphi用於更新當前的保存目錄。

但是從Windows 7開始,這是行不通的。 我從Windows資源管理器中打開dpr,添加新表格。 當我嘗試保存新單元時,delphi嘗試將文件保存到最后一個已知目錄。

有解決這個問題的方法嗎?

Delphi 7使用較舊的“ 通用對話框” API來打開/保存文件( GetOpenFileName()GetSaveFileName()函數)。 在Vista中,該API被較新的Common Item Dialog API( IFileOpenDialogIFileSaveDialog接口)取代。

您描述的行為僅是舊API在現代Windows版本中的工作方式。

根據OPENFILENAME結構文檔:

lpstrInitialDir
類型:LPCTSTR

初始目錄。 選擇初始目錄的算法在不同平台上有所不同。

Windows 7的:

  1. 如果lpstrInitialDir的值與應用程序第一次使用“打開”或“另存為”對話框時傳遞的值相同,則將用戶最近選擇的路徑用作初始目錄。

  2. 否則,如果lpstrFile包含路徑,則該路徑是初始目錄。

  3. 否則,如果lpstrInitialDir不為NULL,則它指定初始目錄。

  4. 如果lpstrInitialDir為NULL,並且當前目錄包含指定過濾器類型的任何文件,則初始目錄為當前目錄。

  5. 否則,初始目錄是當前用戶的個人文件目錄。

  6. 否則,初始目錄為桌面文件夾。

Windows 2000 / XP / Vista:

  1. 如果lpstrFile包含路徑,則該路徑是初始目錄。

  2. 否則, lpstrInitialDir指定初始目錄。

  3. 否則,如果應用程序過去曾經使用過“打開”或“另存為”對話框,則將最近使用的路徑選作初始目錄。 但是,如果應用程序長時間不運行,則其保存的所選路徑將被丟棄。

  4. 如果lpstrInitialDir為NULL,並且當前目錄包含指定過濾器類型的任何文件,則初始目錄為當前目錄。

  5. 否則,初始目錄是當前用戶的個人文件目錄。

  6. 否則,初始目錄為桌面文件夾。

暫無
暫無

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

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