图标有时不会显示在上下文菜单 shell 扩展上

问题描述 投票:0回答:1

我尝试为我的应用程序添加 shell 扩展,并在右键单击媒体文件时将 appTile 显示为图标。我找到了一个很好的示例 ContextMenuSample。我只是在 ExplorerCommandVerb.cpp 中做了一些细微的更改。但有时图标无法显示在上下文菜单上。

  1. 当图标显示时,我单击“显示更多选项”,总是有一个空白图标。我点击它,它可以触发我的应用程序。 Error snapshot

  2. 当外壳扩展上没有显示图标时,我单击它,它无法触发我的应用程序。然后我单击“显示更多选项”,外壳扩展消失了。不知何故,我现在无法重现它。但这个问题发生过好几次了。

我得到如下图标。有什么问题吗?我的项目是这里

IFACEMETHODIMP GetIcon(IShellItemArray* /* psiItemArray */, LPWSTR* ppszIcon){
    retValue = GetAppPathFromRegistry();
    std::wstring regPath = retValue + L"\\Images\\SmallTile.scale-200.png";
    std::filesystem::path currentPath = std::filesystem::current_path();
    
    iconPath = regPath;
    *ppszIcon = const_cast<LPWSTR>(iconPath.c_str());
    return S_OK;}
c++ winapi com contextmenu shell-extensions
1个回答
0
投票

根据Simon Mourier的建议:

根据文档:IExplorerCommand::GetIcon 方法

获取到的图标资源字符串是标准格式的,为 实例“shell32.dll,-249”。

您可以将.ico集成到dll中并使用资源id。

© www.soinside.com 2019 - 2024. All rights reserved.