任意のアプリのジャンプリストから最近/よくあるアイテムを見つけたい。IApplicationDocumentLists インターフェイスを使用してこれを実行できることはわかっています。ただし、そのためには appUserModelId が必要です。だから今私の問題は、そのexeパスを指定して、任意のアプリの appUserModelId を見つけることです。どんな助けでも大歓迎です。
2 に答える
AppUserModeID は EXE ファイル自体の一部ではないため、EXE ファイルへのパスだけでは十分ではありません。AppUserModeID は、EXE の実行中に割り当てられ、プロセス全体またはウィンドウごとに割り当てることができます。
プロセスの明示的なAppUserModeID を照会するには、そのプロセスにコードを挿入して を呼び出しGetCurrentProcessExplicitAppUserModelID()
、IPC メカニズムを使用して値をメイン アプリに送り返す必要があります。
ウィンドウの明示的なAppUserModeID を照会するには、 を使用SHGetPropertyStoreForWindow()
してウィンドウのIPropertyStore
インターフェイスを取得し、プロパティ キーとしてIPropertyStore.GetValue()
指定して呼び出すことができます。PKEY_AppUserModel_ID
いずれの場合も、これらの関数は明示的なAppUserModeID に対してのみ機能することに注意してください。アプリがそれ自体に明示的な AppUserModeID を割り当てない場合、Windows によって割り当てられる暗黙的な AppUserModeID に対しては機能しません。これは、ドキュメントに明確に記載されています。
アプリケーション ユーザー モデル ID (AppUserModelIDs)
一部のアプリケーションは、明示的な AppUserModelID を宣言しません。それらはオプションです。その場合、システムは一連のヒューリスティックを使用して、内部 AppUserModelID を割り当てます。ただし、これらの計算を回避するとパフォーマンス上の利点があり、明示的な AppUserModelID が正確なユーザー エクスペリエンスを保証する唯一の方法です。したがって、明示的な ID を設定することを強くお勧めします。アプリケーションは、システムによって割り当てられた AppUserModelID を取得できません。
更新: Windows 8 では、Microsoft は新しいGetApplicationUserModelId()
機能を追加しました。
を呼び出すコードを挿入する代わりに、それを使用できますGetCurrentProcessExplicitAppUserModelID()
。まだ試していませんが、割り当て方法 (明示的またはシステム割り当て) に関係なく、現在の AppUserModeID を返すと思われます。
Exe パスから AppUserModelId を取得することはできません。これは不可能です。
ただし、現在のユーザーに対してインストールされているすべての StoreApps のすべての AppUserModelId を列挙する方法の投稿を読むことができます: Windows 8 および 10 でインストールされている StoreApps とその ID を列挙する方法