1

任意のアプリのジャンプリストから最近/よくあるアイテムを見つけたい。IApplicationDocumentLists インターフェイスを使用してこれを実行できることはわかっています。ただし、そのためには appUserModelId が必要です。だから今私の問題は、そのexeパスを指定して、任意のアプリの appUserModelId を見つけることです。どんな助けでも大歓迎です。

4

2 に答える 2

6

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()機能を追加しました。

指定されたプロセスのアプリケーション ユーザー モデル IDを取得します。

を呼び出すコードを挿入する代わりに、それを使用できますGetCurrentProcessExplicitAppUserModelID()。まだ試していませんが、割り当て方法 (明示的またはシステム割り当て) に関係なく、現在の AppUserModeID を返すと思われます。

于 2015-01-16T05:12:57.060 に答える
0

Exe パスから AppUserModelId を取得することはできません。これは不可能です。

ただし、現在のユーザーに対してインストールされているすべての StoreApps のすべての AppUserModelId を列挙する方法の投稿を読むことができます: Windows 8 および 10 でインストールされている StoreApps とその ID を列挙する方法

于 2015-08-22T15:36:37.183 に答える