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 從檔案載入。
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 版或更新版本) |