これらを参照してください。
あなたがする必要があるのは、「新しいフォルダー」に使用される文字列の「ID」を発見することです....それを使用LoadString
して、内部の文字列テーブルリソースからロードできますShell32.dll
。
ただし、ID は必ずしも安定しているわけではなく、Windows のエディション間で変更されています。
たとえば... XP では、次のように設定された文字列テーブルがあります。
Windows 7 64 ビットでは...「新しいフォルダー」文字列の ID は 16888 です。
この ID 検出を行うには、次の 2 つの方法を試すことができます。
1. サポートする Windows の各エディションで、「新しいフォルダー」文字列の ID を事前に検出することにより、
Windows の各英語/米国版 (XP、Vista、Windows 7 など) でこの関数を呼び出すだけのユーティリティを作成して、ID を調べる必要があります。
UINT new_folder_id = FindResourceStringId(shell_handle, L"新しいフォルダー", 0x409);
次に、実行中の Windows の現在のバージョンに応じて、正しい ID を使用するコード内で切り替えを行うことができます。
2. 実行時に動的に
英語のリソースで「新しいフォルダー」文字列を検索して、その ID を見つけます。ただし、これには英語の MUI 言語パックをシステムにインストールする必要があります。
この C# コードを使用して、特定の ID を指定して特定の「文字列」を読み込みます。
コードが機能しているかどうかをテストするには、MUI 言語パックをインストールしてから、別のロケールの文字列を読み込もうとすることができます。
SHChangeNotifyRegister
または、「シェル内」で行われた変更をリッスンするために使用できます...特定のことを行うときにExplorer
呼び出します。SHChangeNotify
ここでコードを使用します。
SHCNRF_ShellLevel、SHCNE_MKDIR などの適切なフラグを使用します。