GetFileMUIPath 関数 (winnls.h)

指定された LN ファイルに関連付けられているすべての言語固有のリソース ファイルへのパスを取得します。 アプリケーションは、各リソース ファイルのパスを取得するために、この関数を繰り返し呼び出す必要があります。

構文

BOOL GetFileMUIPath(
  [in]                DWORD      dwFlags,
  [in]                PCWSTR     pcwszFilePath,
  [in, out, optional] PWSTR      pwszLanguage,
  [in, out]           PULONG     pcchLanguage,
  [out, optional]     PWSTR      pwszFileMUIPath,
  [in, out]           PULONG     pcchFileMUIPath,
  [in, out]           PULONGLONG pululEnumerator
);

パラメーター

[in] dwFlags

言語形式とフィルター処理を識別するフラグ。 次のフラグは、 pwszLanguage で示される言語の形式を指定します。 フラグは相互に排他的であり、既定値はMUI_LANGUAGE_NAME。

意味
MUI_LANGUAGE_ID
言語識別子形式で 言語 文字列を取得します。
MUI_LANGUAGE_NAME
言語名の形式で 言語 文字列を取得します。
 

次のフラグは、 pwszLanguageNULL に設定されている場合に、言語固有のリソース ファイルの検索に使用する関数のフィルター処理を指定します。 フィルター 処理フラグは相互に排他的であり、既定値はMUI_USER_PREFERRED_UI_LANGUAGES。

意味
MUI_USE_SEARCH_ALL_LANGUAGES
ファイル ライセンスを考慮せずに、 pcwszFilePath によって示されるパスのすべての言語固有のリソース ファイルを取得します。 このフラグは、アプリケーションが pwszLanguage に null 文字列を指定する場合にのみ関連します。
MUI_USER_PREFERRED_UI_LANGUAGES
フォールバック リストに言語を実装するファイルのみを取得します。 連続する呼び出しは、連続するフォールバックを適切な順序で列挙します。 pcchFileMUIPath の出力値によって示される最初のファイルが最適である必要があります。 このフラグは、アプリケーションが pwszLanguage に null 文字列を指定する場合にのみ関連します。
MUI_USE_INSTALLED_LANGUAGES
コンピューターにインストールされている言語のファイルのみを取得します。 このフラグは、アプリケーションが pwszLanguage に null 文字列を指定する場合にのみ関連します。
 

次のフラグを使用すると、 ユーザーは pcwszFilePath で指定されたファイルの種類を示すことができます。これにより、関数は".mui" をファイル名に追加する必要があるかどうかを判断できます。 フラグは相互に排他的です。 アプリケーションが両方のフラグを渡すと、関数は失敗します。 アプリケーションがどちらのフラグも渡していない場合、関数はルート フォルダー内のファイルをチェックしてファイルの種類を確認し、ファイルの名前付けを決定します。

意味
MUI_LANG_NEUTRAL_PE_FILE
pcwszFilePath で渡されたファイルを確認し、処理する前に ".mui" をファイル名に追加しないでください。 たとえば、Abc.exe を Abc.exe.mui に変更します。
MUI_NON_LANG_NEUTRAL_FILE
pcwszFilePath で渡されたファイルを確認せず、処理する前に ".mui" をファイル名に追加しないでください。 たとえば、Abc.txt または Abc.chm を使用します。

[in] pcwszFilePath

ファイル パスを指定する null で終わる文字列へのポインター。 パスは、既存の LN ファイル、または .txt、.inf、.msc ファイルなどのファイル用です。 ファイルが LN ファイルの場合、関数は関連する言語固有のリソースを含むファイルを検索します。 他のすべての種類のファイルに対して、 関数は、指定されたファイル名とパスに正確に対応するファイルをシークします。 アプリケーションでは、MUI_LANG_NEUTRAL_PE_FILE または MUI_NON_LANG_NEUTRAL_FILE フラグを使用して、ファイルの種類のチェックの動作を上書きできます。 詳細については、「解説」を参照してください。

メモ 指定したファイル パスは、"\\machinename\c$\windows\system32\notepad.exe" などのネットワーク パスにすることができます。
 

[in, out, optional] pwszLanguage

言語文字列を含むバッファーへのポインター。 入力時に、このバッファーには、 dwFlags の設定に応じて、アプリケーションが言語固有のリソース ファイルを検索する必要がある言語識別子または言語名が含まれます。 関数から正常に戻った場合、このパラメーターには、関数が見つけた言語固有のリソース ファイルの言語が含まれます。

または、アプリケーションでこのパラメーターを NULL に設定し、 pcchLanguage によって参照される値を 0 に設定することもできます。 この場合、関数は pcchLanguage で必要なバッファー サイズを取得します。

[in, out] pcchLanguage

pwszLanguage で示される言語文字列のバッファー サイズへのポインター (文字数)。 アプリケーションでこのパラメーターによって参照される値を 0 に設定し、pwszLanguageNULL を渡す場合、必要なバッファー サイズは pcchLanguage で返され、返されるバッファー サイズは常にLOCALE_NAME_MAX_LENGTHされます。通常、関数は複数回連続して呼び出されるためです。 関数は、連続するすべての呼び出しの言語名の正確なサイズを判断できず、後続の呼び出しでバッファーを拡張することはできません。 したがって、LOCALE_NAME_MAX_LENGTHは唯一の安全な最大値です。

[out, optional] pwszFileMUIPath

言語固有のリソース ファイルへのパスを含むバッファーへのポインター。 このバッファーをサイズMAX_PATHに割り当てることを強くお勧めします。

または、pcchFileMUIPath によって参照される値が 0 に設定されている場合、このパラメーターは NULL を取得できます。 この場合、関数は pcchFileMUIPath のファイル パス バッファーに必要なサイズを取得します。

[in, out] pcchFileMUIPath

pwszFileMUIPath で示されるファイル パスのバッファー サイズへのポインター (文字数)。 関数から正常に戻った場合、このパラメーターは取得したファイル パスのサイズを示します。 アプリケーションでこのパラメーターによって参照される値を 0 に設定した場合、関数は pwszFileMUIPathNULL を取得し、必要なバッファー サイズは pcchFileMUIPath で返され、返されるバッファー サイズは常にMAX_PATHされます。これは、通常、関数が連続して複数回呼び出されるためです。 関数は、連続するすべての呼び出しのパスの正確なサイズを判断できず、後続の呼び出しでバッファーを拡張できません。 したがって、MAX_PATHは唯一の安全な最大値です。

[in, out] pululEnumerator

列挙変数へのポインター。 この関数を初めて呼び出す場合、変数の値は 0 である必要があります。 以降の呼び出しの間に、アプリケーションはこのパラメーターの値を変更しないでください。 関数は、使用可能なすべての言語固有のリソース ファイル パスを取得した後、 FALSE を返します

戻り値

成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 関数が失敗した場合、出力パラメーターは変更されません。

拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。これにより、次のエラー コードが返される可能性があります。

  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
  • ERROR_NO_MORE_FILES。 これ以上処理するファイルはありませんでした。

注釈

この関数は、言語固有のリソース ファイルが存在することを確認しますが、正しいことを確認しません。 リソース ファイルは、「 アプリケーションのデプロイ」で説明されているストレージ規則に従って格納する必要があります。

この関数の呼び出しでMUI_LANGUAGE_ID フラグが指定されている場合は、指定された言語文字列を指定する必要があります。

先頭の 0x を含まず、長さが 4 文字の 16 進数言語識別子を使用します。

たとえば、en-US は "0409" として、en は "0009" として渡す必要があります。 返される言語文字列は、

同じ形式。

MUI_LANGUAGE_IDを指定する場合、指定された言語文字列の各 16 進値は実際の言語識別子を表す必要があります。 特に、次のロケールに対応する値を指定することはできません。

列挙情報を受信するには、アプリケーションは FALSE を返すまでこの関数を繰り返し呼び出す必要があります。呼び出しの間、 pululEnumerator の内容は変更されません。 各呼び出しは、異なる言語固有のリソース ファイルへのパスを取得するため、アプリケーションは、呼び出しの間に空の文字列に言語バッファーをクリアする必要があります。 アプリケーションでこれを行わない場合、 pwszLanguage の入力値が dwFlags の設定よりも優先されます。

通常、リソース ローダーはリソース ファイルを検索するために使用されます。 ただし、アプリケーションでは、この関数を使用してファイルを検索することもできます。 入力ファイルパスが LN ファイルの場合、関数は対応する言語固有のリソース ファイルを探すときにサフィックス ".mui" をアタッチします。

たとえば、 関数は、アプリケーションが pcwszFilePath の文字列 "C:\mydir\Example1.dll" をルート ファイル パスとして渡し、 dwFlags を MUI_LANGUAGE_NAME | に設定すると、次のファイルを取得します。MUI_USE_SEARCH_ALL_LANGUAGES:

  • C:\mydir\Example1.dll
    • C:\mydir\en-US\Example1.dll.mui
    • C:\mydir\ja-JP\Example1.dll.mui
関数の最初の呼び出しでは、 pwszFileMUIPath が "C:\mydir\en-US\Example1.dll.mui" に設定されます。 2 番目の呼び出しでは、ファイル パスが "C:\mydir\ja-JP\Example1.dll.mui" に設定されます。 関数は、3 回目に呼び出されたときに FALSE を 返し、 GetLastError は ERROR_NO_MORE_FILESを返します。

pcwszFilePath によって示されるファイルにリソース構成データがない場合、またはファイルが存在しない場合、関数は対応する言語固有のリソース ファイルを探すときにファイル名をそのまま残します。

たとえば、アプリケーションは pcwszFilePath の文字列 "C:\mydir\Example2.txt" をルート ファイル パスとして渡し、 dwFlags を MUI_LANGUAGE_NAME |MUI_USER_PREFERRED_UI_LANGUAGES。 ユーザーが優先する UI 言語 (順番) がカタロニア語、"ca-ES"、スペイン語 (スペイン)、"es-ES" で、次のファイルが存在する場合を考えてみましょう。

  • (C:\mydir に対応するファイルはありません)
    • C:\mydir\en-US\Example2.txt
    • C:\mydir\en\Example2.txt
    • C:\mydir\es-ES\Example2.txt
    • C:\mydir\es\Example2.txt
    • C:\mydir\ja-JP\Example2.txt
関数の最初の呼び出しでは、"ca-ES" またはニュートラル言語 "ca" のリソースがないと判断されます。 次に、関数は次のオプション "es-ES" を試します。このオプションは一致するものを見つけることに成功します。 戻る前に、関数は pwszFileMUIPath を "C:\mydir\es-ES\Example2.txt" に設定します。 関数の 2 つ目のアプリケーション呼び出しでは、 pwszFileMUIPath を "C:\mydir\es\Example2.txt" に設定して列挙を続行します。

ターゲット ファイルとそれに関連付けられているリソース ファイルが実際に Side-by-side 対応アセンブリである場合、GetFileMUIPath を使用してリソース ファイルへのパスを取得することはできません。 MUI サポートで Side-by-side アセンブリを使用する方法の詳細については、「 多言語ユーザー インターフェイス でのアセンブリの使用」を参照してください。

C# シグネチャ

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetFileMUIPath(
            System.UInt32 dwFlags,
            System.String pcwszFilePath,
            System.Text.StringBuilder pwszLanguage,
            ref System.UInt32 pcchLanguage,
            System.Text.StringBuilder pwszFileMUIPath,
            ref System.UInt32 pcchFileMUIPath,
            ref System.UInt64 pululEnumerator
            );

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

GetThreadUILanguage

多言語ユーザー インターフェイス

多言語ユーザー インターフェイス関数

SetThreadPreferredUILanguages

SetThreadUILanguage