IShellLinkW::Resolve 方法 (shobjidl_core.h)
嘗試尋找Shell鏈接的目標,即使已移動或重新命名也一樣。
語法
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 從檔案載入。
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 版或更新版本) |