SHLoadIndirectString 関数 (shlwapi.h)

そのリソースが間接文字列 ('@' 記号で始まる文字列) の形式で指定された場合に、指定されたテキスト リソースを抽出します。

構文

LWSTDAPI SHLoadIndirectString(
  [in]  PCWSTR pszSource,
  [out] PWSTR  pszOutBuf,
  [in]  UINT   cchOutBuf,
        void   **ppvReserved
);

パラメーター

[in] pszSource

種類: PCWSTR

リソースの取得元となる間接文字列を含むバッファーへのポインター。 この文字列は'@' 記号で始まり、「解説」セクションで説明されているいずれかの形式を使用する必要があります。 この関数は、'@' 記号で始まらない文字列を正常に受け入れますが、文字列は 変更せずに pszOutBuf に渡されます。

[out] pszOutBuf

種類: PWSTR

この関数が正常に返されたときにテキスト リソースを受け取るバッファーへのポインター。 pszOutBufpszSource はどちらも同じバッファーを指すことができます。この場合、元の文字列は上書きされます。

[in] cchOutBuf

型: UINT

pszOutBuf が指すバッファーのサイズ (文字単位)。

ppvReserved

型: void**

使用されません。NULL に設定 します

戻り値

種類: HRESULT

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

間接文字列は複数の形式で提供でき、それぞれの形式には独自の解釈があります。

  • ファイル名とリソース ID ''' 構文@filename、リソース '''

    この文字列は、 リソース 値をロケーターとして使用して、 という名前のファイルから抽出されます。 リソース値が 0 以上の場合、数値はバイナリ ファイル内の文字列のインデックスになります。 数値が負の場合は、リソース ID になります。 取得した文字列は出力バッファーにコピーされ、関数は S_OKを返します。

  • バージョン修飾子 ''' 構文@filename、リソースを含むファイル名とリソース ID。v2 '''

    このフォームは、リソースが変更されても、古いリソースと同じインデックスまたは ID を使用している場合に使用できます。 バージョン修飾子がないと、多言語ユーザー インターフェイス (MUI) キャッシュは、リソースが変更されたことを認識せず、更新されません。 バージョン修飾子を追加すると、値は新しいリソースと見なされ、キャッシュに追加されます。 新しいリソースには新しい ID またはインデックスを使用し、それが不可能な場合にのみバージョン修飾子を使用することをお勧めします。

  • PRI ファイル パスとリソース ID ''' 構文 @{PRIFilepath?resource} '''

    パッケージ リソース インデックス (PRI) は、インデックス付きリソースまたはリソースへの参照を含むWindows 8で導入されたバイナリ形式です。 .pri ファイルは、アプリのパッケージの一部としてバンドルされています。 .pri ファイルの詳細については、「 Windows ストア アプリでのリソースの作成と取得」を参照してください。

    この文字列は、 ロケーターとしてリソース を使用して、 という名前の .pri ファイルから抽出されます。 取得した文字列は出力バッファーにコピーされ、関数は S_OKを返します。 文字列は、現在のシェル環境または ResourceContext に基づいて抽出されます。

    この種類の間接文字列の例を次に示します。

    
    @{C:\Program Files\WindowsApps\Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe\resources.pri? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
  • パッケージ名とリソース ID ''' 構文 @{PackageFullName?resource} '''

    この文字列は、 PackageFullName によって識別されるパッケージのアプリのルート ディレクトリに格納されている Resources.pri ファイルから、 リソース をロケーターとして使用して抽出されます。 取得した文字列は出力バッファーにコピーされ、関数は S_OKを返します。 文字列は、アプリの環境または ResourceContext に基づいて抽出されます。

    メモ この文字列は、現在のユーザーにインストールされているパッケージを参照する必要があります。 そうでない場合、呼び出しは失敗します。
     
    この種類の間接文字列の例を次に示します。 この例では、参照名は完全修飾されていますが、名前空間 ("resources" など) は含んでいません。 デプロイ スタックでは、名前が展開され、すべての名前空間で検索されます。
    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/manifestAppDescription}
    

    この次の例では、完全修飾参照名で、参照を制限する名前空間を指定します。

    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
文字列が間接文字列でない場合、 文字列は pszOutBuf に変更されずに直接コピーされ、関数はS_OKを返します。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー shlwapi.h
Library Shlwapi.lib
[DLL] Shlwapi.dll (バージョン 5.5 以降)