IPropertyStorage::WriteMultipleメソッドの備考セクションによると..。
新しいプロパティセットが作成されると、特別なコードページ(プロパティID 1)とロケールID(プロパティID 0x80000000)のプロパティがプロパティセットに自動的に書き込まれます。
ただし、PropertySetでロケールIDを省略したいと思います。私が試してみました
specs[0].ulKind = PRSPEC_PROPID;
specs[0].propid = PID_LOCALE;
//specs[0].lpwstr = 0;
hr = pPropStorage->DeleteMultiple(1, specs);
しかし、これは失敗します
0x80030057無効なパラメータエラー
この不要なプロパティIDを省略するにはどうすればよいですか?IPropertyStorage::Commit()
前後にやってみました。ただし、を呼び出すと同じエラーが発生しますDeleteMultiple()
。
注:specs [0] .lpwstr=0の有無にかかわらず試しました。しかし、それはpropidとの「結合」であるため、愚かでした。したがって、両方を書き込むと、最初に変更されます。しかし、propid = PID_LOCALEのみを設定すると、それでも失敗していました。