問題タブ [ipropertystorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
148 参照

c++ - 自動的に追加されたLOCALEプロパティをIPropertyStorageから削除するにはどうすればよいですか?

IPropertyStorage::WriteMultipleメソッドの備考セクションによると..。

新しいプロパティセットが作成されると、特別なコードページ(プロパティID 1)とロケールID(プロパティID 0x80000000)のプロパティがプロパティセットに自動的に書き込まれます。

ただし、PropertySetでロケールIDを省略したいと思います。私が試してみました

しかし、これは失敗します

0x80030057無効なパラメータエラー

この不要なプロパティIDを省略するにはどうすればよいですか?IPropertyStorage::Commit()前後にやってみました。ただし、を呼び出すと同じエラーが発生しますDeleteMultiple()

注:specs [0] .lpwstr=0の有無にかかわらず試しました。しかし、それはpropidとの「結合」であるため、愚かでした。したがって、両方を書き込むと、最初に変更されます。しかし、propid = PID_LOCALEのみを設定すると、それでも失敗していました。

0 投票する
1 に答える
437 参照

windows-shell - Windows IPropertyStore ハンドラー拡張機能がプロパティ値を返さない

私たちの製品が作成するファイル タイプのプロパティ ハンドラーを作成しようとしていますが、ほとんどの場合、ハンドラーは IPropertyStore::GetValue を介してデータを返すことができません。

トレース/デバッグにより、Initialise メソッドが呼び出され、ストアに値が入力されていることを確認できます。

しかし、ストアでキーが見つかったにもかかわらず、GetValue が呼び出されるたびに、バリアントにデータが含まれていないことがわかります。その時点で私が次のようなことをした場合:

outval に入ると、すべてが機能し、InfoTip に BLANK が表示されます。

不思議なことに、SHGetPropertyStoreFromParsingName を使用するテスト アプリを作成し、プロパティを要求すると、正しいデータが返されます。

少し困惑しました、誰か?

ティア

0 投票する
1 に答える
673 参照

winapi - PROPERTYKEY::pid意味

誰かが構造体のpidフィールドが何であるかを説明できますか?PROPERTYKEYMicrosoftは、0or1を使用しないで、あなたは大丈夫だと言っていますがIPropertyStore、コードに実装する必要がある場合、これは役に立ちません。pidキーの一部であると想定されているので、同じであるが異なる複数の値がfmtid存在pidする可能性がありますか?または、無視する必要があるので、無視しGetValueて、一致する値を返す必要がありますか?fmtidpid

0 投票する
1 に答える
192 参照

winapi - IPropertyStore_Commit メソッド - 必要ですか? なぜ実装されていないのですか?

IPropertyStore のフラグの値を変更しようとしています。ただし、フラグの値に関係なく、私のコードは同じように動作するようです。

IPropertyStore_Commitこれは、フラグを変更した後 にコードが呼び出されないためですか?

メソッドを呼び出そうとしましたが、0x80004001「実装されていません」という意味のエラー コードが表示されました。したがって、私の質問の 2 番目の部分: なぜ実装されていないのですか?


より詳細には、オーディオ処理の一部に (JNI 経由で) WASAPI を利用する Java ソフトフォンに取り組んでいます。ネイティブ コードは C で記述されています。

最近 AES (Acoustic Echo Suppression) を有効にしたところ、AGC (Automatic Gain Control) も有効になっていることがわかりました。IPropertyStore オブジェクトに MFPKEY_WMAAECMA_FEATR_AGC キーを設定して、AGC を無効にしようとしています。ただし、値を設定しても違いはありません。

関連するコード スニペットは次のとおりです。

0 投票する
1 に答える
46 参照

winapi - コミットせずに SetValue を実行する IPropertyStory

このブログをフォローして、ウィンドウの を変更する同じコードを書いてSystem.AppUserModel.IDいます: The Old New Thing :: ユーザーが自分のプログラムをタスクバーに固定できないようにするにはどうすればよいですか?

彼はします:

私はコードを書いたのでpps->Commit()、私は混乱してSetValueCommitます。

なぜ彼はしないのですCommitか?彼は間違っていますか?それとも、彼はあなたが必要としない特別なケースCommitですか?

ありがとう

0 投票する
1 に答える
1542 参照

winapi - SHGetPropertyStoreForWindow - 既存の System.AppUserModel.ID にプロパティを設定する方法

だから私はメインタブグループから私のウィンドウを次のように分割しましIPropertyStoreSHGetPropertyStoreForWindow:

その後、ユーザーは後で名前を変更することを決定したので、私の機能では次のようにします。

これは初めて正常に機能します。RelaunchCommandしかし、彼が だけを変更したい場合は、RelaunchDisplayNameResource私も を変更しない限り機能しませんID

ここでの例として、私の実際のシナリオではRelaunchCommandRelaunchDisplayNameResourceユーザーもアイコンを変更したいのですが、同じ問題が発生し、ID. IDとにかく毎回変更せずに複数回実行するには?

ありがとう

PS: このソリューションのもう 1 つの大きな理由は、私のウィンドウの 1 つに既に があり、System.AppUserModel.ID既に固定されていることです。アイコン/再起動コマンド/などを変更したいだけです。変更System.AppUserModel.IDすると、効果的に固定が解除されます。:(

0 投票する
0 に答える
185 参照

winapi - IPropertyStore で IPersistFile::Load を複数回使用する

.lnk一連のファイルを繰り返し処理し、それらに関する情報を取得しています。

これを行うファイルごとに、これは js-ctypes ですが、winapi の質問です。エラー チェックを削除し、コードを簡素化しました。

しかしppropvar.pwszVal、私が編集した最初のファイルの SystemAppUserModelID であることが判明していますが、IPersitFile::Loadこれは予想されることですか? これを修正するにはCoUninitializeCoInitialize各ループまたは何かをする必要がありますか?

ありがとう