問題タブ [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.
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のみを設定すると、それでも失敗していました。
windows-shell - Windows IPropertyStore ハンドラー拡張機能がプロパティ値を返さない
私たちの製品が作成するファイル タイプのプロパティ ハンドラーを作成しようとしていますが、ほとんどの場合、ハンドラーは IPropertyStore::GetValue を介してデータを返すことができません。
トレース/デバッグにより、Initialise メソッドが呼び出され、ストアに値が入力されていることを確認できます。
しかし、ストアでキーが見つかったにもかかわらず、GetValue が呼び出されるたびに、バリアントにデータが含まれていないことがわかります。その時点で私が次のようなことをした場合:
outval に入ると、すべてが機能し、InfoTip に BLANK が表示されます。
不思議なことに、SHGetPropertyStoreFromParsingName を使用するテスト アプリを作成し、プロパティを要求すると、正しいデータが返されます。
少し困惑しました、誰か?
ティア
winapi - PROPERTYKEY::pid意味
誰かが構造体のpid
フィールドが何であるかを説明できますか?PROPERTYKEY
Microsoftは、0
or1
を使用しないで、あなたは大丈夫だと言っていますがIPropertyStore
、コードに実装する必要がある場合、これは役に立ちません。pid
キーの一部であると想定されているので、同じであるが異なる複数の値がfmtid
存在pid
する可能性がありますか?または、無視する必要があるので、無視しGetValue
て、一致する値を返す必要がありますか?fmtid
pid
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 を無効にしようとしています。ただし、値を設定しても違いはありません。
関連するコード スニペットは次のとおりです。
winapi - コミットせずに SetValue を実行する IPropertyStory
このブログをフォローして、ウィンドウの を変更する同じコードを書いてSystem.AppUserModel.ID
います: The Old New Thing :: ユーザーが自分のプログラムをタスクバーに固定できないようにするにはどうすればよいですか?
彼はします:
私はコードを書いたのでpps->Commit()
、私は混乱してSetValue
いCommit
ます。
なぜ彼はしないのですCommit
か?彼は間違っていますか?それとも、彼はあなたが必要としない特別なケースCommit
ですか?
ありがとう
winapi - SHGetPropertyStoreForWindow - 既存の System.AppUserModel.ID にプロパティを設定する方法
だから私はメインタブグループから私のウィンドウを次のように分割しましIPropertyStore
たSHGetPropertyStoreForWindow
:
その後、ユーザーは後で名前を変更することを決定したので、私の機能では次のようにします。
これは初めて正常に機能します。RelaunchCommand
しかし、彼が だけを変更したい場合は、RelaunchDisplayNameResource
私も を変更しない限り機能しませんID
。
ここでの例として、私の実際のシナリオではRelaunchCommand
、RelaunchDisplayNameResource
ユーザーもアイコンを変更したいのですが、同じ問題が発生し、ID
. ID
とにかく毎回変更せずに複数回実行するには?
ありがとう
PS: このソリューションのもう 1 つの大きな理由は、私のウィンドウの 1 つに既に があり、System.AppUserModel.ID
既に固定されていることです。アイコン/再起動コマンド/などを変更したいだけです。変更System.AppUserModel.ID
すると、効果的に固定が解除されます。:(
winapi - IPropertyStore で IPersistFile::Load を複数回使用する
.lnk
一連のファイルを繰り返し処理し、それらに関する情報を取得しています。
これを行うファイルごとに、これは js-ctypes ですが、winapi の質問です。エラー チェックを削除し、コードを簡素化しました。
しかしppropvar.pwszVal
、私が編集した最初のファイルの SystemAppUserModelID であることが判明していますが、IPersitFile::Load
これは予想されることですか? これを修正するにはCoUninitialize
、CoInitialize
各ループまたは何かをする必要がありますか?
ありがとう