共用方式為


AssocQueryStringA 函式 (shlwapi.h)

搜尋並擷取登錄中的檔案或通訊協定關聯字串。

語法

LWSTDAPI AssocQueryStringA(
  [in]            ASSOCF   flags,
  [in]            ASSOCSTR str,
  [in]            LPCSTR   pszAssoc,
  [in, optional]  LPCSTR   pszExtra,
  [out, optional] LPSTR    pszOut,
  [in, out]       DWORD    *pcchOut
);

參數

[in] flags

類型:ASSOCF

可用來控制搜尋的旗標。 它可以是 ASSOCF 值 的任何組合,但只能包含一個ASSOCF_INIT值。

[in] str

類型:ASSOCSTR

ASSOCSTR 值,指定要傳回的字串類型。

[in] pszAssoc

類型:LPCTSTR

用來判斷根索引鍵之 Null 終止字串的指標。 您可以使用下列四種類型的字串。

  1. 擴展名:擴展名,例如 .txt。
  2. CLSID:標準 “{GUID}” 格式的 CLSID GUID。
  3. ProgID:應用程式的 ProgID,例如 Word.Document.8
  4. 可執行檔名稱:應用程式 .exe 檔案的名稱。 ASSOCF_OPEN_BYEXENAME 旗標必須在旗標中設定。

[in, optional] pszExtra

類型:LPCTSTR

選擇性的 Null 終止字串,其中包含字串位置的其他資訊。 通常會設定為 Shell 動詞指令,例如 開啟。 如果未使用此參數,請將此參數設定為 NULL

[out, optional] pszOut

類型:LPTSTR

Null 終止字串的指標,當此函式成功傳回時,會收到要求的字串。 將此參數設定為 NULL 擷取所需的緩衝區大小。

[in, out] pcchOut

類型:DWORD*

呼叫 函式時,值的指標會設定為 pszOut 緩衝區 字元數。 當函式成功傳回時,值會設定為實際放在緩衝區中的字元數。

如果在 旗標中設定 ASSOCF_NOTRUNCATE 旗標,而且 pszOut 中指定的緩衝區太小,則函式會傳回E_POINTER,並將值設定為所需的緩衝區大小。

如果 pszOut 為 NULL,則函式會傳回 S_FALSE,pcchOut 指向緩衝區所需的大小,以字元為單位。

傳回值

類型:HRESULT

傳回標準 COM 錯誤值,包括下列專案:

錯誤 意義
S_OK 成功。
E_POINTER pszOut 緩衝區太小,無法保存整個字串。
S_FALSE pszOutNULLpcchOut 包含所需的緩衝區大小。

言論

此函式是 IQueryAssociations 介面的包裝函式。 AssocQueryString 函式旨在簡化使用 IQueryAssociations 介面的程式。

選取項目之後,主機必須決定該專案可用的預覽處理程式(如果有的話)。 預覽處理程式通常會在擴展名或 ProgID 上註冊,但某些預覽處理程式只會針對特定殼層資料夾中的專案具現化(例如,MAPI 預覽處理程式與來自MAPI Shell資料夾的任何專案相關聯)。 因此,主機必須使用 IQueryAssociations,以判斷要使用的預覽處理程式。 如需檔案和通訊協定關聯函式運作方式的進一步討論,請參閱 IQueryAssociations

注意

shlwapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 AssocQueryString 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional、Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 shlwapi.h
連結庫 Shlwapi.lib
DLL Shlwapi.dll 版 (5.0 版或更新版本)