Share via


IShellLinkA::Resolve 方法 (shobjidl_core.h)

嘗試尋找殼層鏈接的目標,即使已移動或重新命名也一樣。

語法

HRESULT Resolve(
  HWND  hwnd,
  DWORD fFlags
);

參數

hwnd

類型: HWND

Shell 將做為對話框父代的視窗句柄。 如果殼層在解析殼層連結時需要提示使用者提供詳細資訊,Shell 就會顯示對話方塊。

fFlags

類型: DWORD

動作旗標。 此參數可以是下列值的組合。

SLR_NO_UI (0x0001)

0x0001。 如果無法解析連結,請勿顯示對話方塊。 設定 SLR_NO_UI 時, fFlags 的高序單字可以設定為逾時值,指定解析連結所花費的時間上限。 如果連結無法在逾時期間內解析,則函式會傳回 。 如果高序單字設定為零,則逾時持續時間會設定為預設值 3,000 毫秒, (3 秒) 。 若要指定值,請將 fFlags 的高字組設為所需的逾時持續時間,以毫秒為單位。

SLR_ANY_MATCH (0x0002)

0x0002。 未使用。

SLR_UPDATE (0x0004)

0x0004。 如果連結物件已變更,請更新其路徑和標識符清單。 如果 已設定SLR_UPDATE ,您就不需要呼叫 IPersistFile::IsDirty 來判斷連結物件是否已變更。

SLR_NOUPDATE (0x0008)

0x0008。 請勿更新連結資訊。

SLR_NOSEARCH (0x0010)

0x0010。 請勿執行搜尋啟發學習法。

SLR_NOTRACK (0x0020)

0x0020。 請勿使用分散式連結追蹤。

SLR_NOLINKINFO (0x0040)

0x0040。 停用分散式鏈接追蹤。 根據預設,分散式連結追蹤會根據磁碟區名稱,追蹤跨多個裝置的卸除式媒體。 它也會使用 UNC 路徑來追蹤驅動器號已變更的遠端檔案系統。 設定 SLR_NOLINKINFO 會停用這兩種類型的追蹤。

SLR_INVOKE_MSI (0x0080)

0x0080。 呼叫 Windows Installer。

SLR_NO_UI_WITH_MSG_PUMP (0x0101)

0x0101。 Windows XP 和更新版本

SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)

0x0200。 Windows 7 和更新版本。 當這個方法無法解析時,請提供刪除快捷方式的選項,即使快捷方式不是檔案的快捷方式也一樣。

SLR_KNOWNFOLDER (0x0400)

0x0400。 Windows 7 和更新版本。 如果目標為已知資料夾且已知資料夾已重新導向,則回報為已變更。 只有在原始目標路徑是檔案系統路徑或標識符清單,而不是別名的已知資料夾標識子清單時,這才有效。

SLR_MACHINE_IN_LOCAL_TARGET (0x0800)

0x0800。 Windows 7 和更新版本。 解析 UNC 目標中指向本機計算機的電腦名稱。 這個值會與 SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET搭配使用。

SLR_UPDATE_MACHINE_AND_SID (0x1000)

0x1000。 Windows 7 和更新版本。 視需要更新電腦 GUID 和使用者 SID。

傳回值

類型: HRESULT

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

建立鏈接之後,目標的名稱或位置可能會變更。 IShellLink::Resolve 方法會先擷取與鏈接相關聯的路徑。 如果物件已不存在或已重新命名, Resolve 會嘗試尋找它。 如果成功且符合下列條件,則會更新從 載入連結物件的檔案,以反映鏈接物件的新狀態。

  • 已設定 SLR_UPDATE 旗標。
  • 已移動或重新命名目標,更新Shell連結物件的內部狀態以參考新目標。
  • Shell 連結物件已透過 IPersistFile 從檔案載入。
用戶端也可以呼叫 IPersistFile::IsDirty 方法來判斷連結物件是否已變更,而且檔案是否需要更新。

Resolve 有兩種方法可尋找目標物件。 第一個是分散式連結追蹤服務。 如果服務可供使用,它可以找到位於NTFS 5.0版磁碟區上的物件,並移至該磁碟區上的另一個位置。 它也可以找到已移至另一個NTFS 5.0版磁碟區的物件,包括其他電腦上的磁碟區。 若要隱藏使用此服務,請設定 SLR_NOTRACK 旗標。

如果分散式連結追蹤無法使用或找不到連結物件, Resolve 會嘗試使用搜尋啟發學習法來尋找它。 它會先查看對象的最後一個已知目錄,尋找具有不同名稱但相同屬性和檔案建立時間的物件。 接下來,它會以遞歸方式在對象最後一個已知目錄的鄰近位置搜尋子目錄。 它會尋找具有相同名稱或建立時間的物件。 最後, Resolve 會在桌面和其他本機磁碟區上尋找相符的物件。 若要隱藏使用搜尋啟發學習法,請設定 SLR_NOSEARCH 旗標。

如果這兩種方法都失敗,系統會顯示對話框,提示使用者輸入位置。 若要隱藏對話框,請設定 SLR_NO_UI 旗標。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 shobjidl_core.h
Dll Shell32.dll (4.0 版或更新版本)