gpt4 book ai didi

winapi - SHGetPropertyStoreForWindow - 如何在现有 System.AppUserModel.ID 上设置属性

转载 作者:行者123 更新时间:2023-12-01 14:12:01 25 4
gpt4 key购买 nike

所以我通过 IPropertyStore 从主选项卡组中拆分我的窗口通过 SHGetPropertyStoreForWindow像这样:

IPropertyStore_SetValue(pps, PKEY_AppUserModel_ID.address(), 'Contoso.Scratch');
pps->Commit();

然后用户后来决定他想重命名它,所以他使用我的功能:
IPropertyStore_SetValue(pps, PKEY_AppUserModel_RelaunchCommand, customLaunchPath);
IPropertyStore_SetValue(pps, PKEY_AppUserModel_RelaunchDisplayNameResource, 'my first name');
pps->Commit();

这是第一次成功。但如果他只想改变 RelaunchCommandRelaunchDisplayNameResource除非我更改 ID,否则它不会工作以及。

我给了 RelaunchCommandRelaunchDisplayNameResource作为这里的例子,在我的真实案例中,用户也想更改图标,但同样的问题,它第一次运行 ID .无论如何运行多次而无需更改 ID每次?

谢谢

PS:
这个解决方案的另一个重要原因是我的一个窗口已经有 System.AppUserModel.ID并且已经固定。如果我更改 System.AppUserModel.ID,我只想更改图标/relaunchCommand/等。然后它会有效地解开它。 :(

最佳答案

该主题的解决方案是我正在使用的解决方法:

Detecting Application Pin State

在设置属性之前,我通过查看以下文件夹来测试它是否已固定:

  • %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts
  • %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

  • 我做了一个 IPropertyStore::getValue在所有快捷方式上,如果它与我的 AppUserModelID 匹配,那么我会更改其上的图标、标签等,这会立即在任务栏中更新它。

    这有效,但我不会接受这个解决方案,因为它没有记录在案,所以可能不是正确的方法。

    如果在快捷方式中找不到 AppUserModel.ID,则 i 只是到 IPropertyStore::setValue在我的应用程序的窗口上(我必须在每个窗口上执行,我找不到在整个应用程序中执行此操作的方法)

    关于winapi - SHGetPropertyStoreForWindow - 如何在现有 System.AppUserModel.ID 上设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228042/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com