我尝试为我的应用程序添加 shell 扩展,并在右键单击媒体文件时将 appTile 显示为图标。我找到了一个很好的示例 ContextMenuSample。我只是在 ExplorerCommandVerb.cpp 中做了一些细微的更改。但有时图标无法显示在上下文菜单上。
当外壳扩展上没有显示图标时,我单击它,它无法触发我的应用程序。然后我单击“显示更多选项”,外壳扩展消失了。不知何故,我现在无法重现它。但这个问题发生过好几次了。
我得到如下图标。有什么问题吗?我的项目是这里
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;}
根据Simon Mourier的建议:
根据文档:IExplorerCommand::GetIcon 方法
获取到的图标资源字符串是标准格式的,为 实例“shell32.dll,-249”。
您可以将.ico集成到dll中并使用资源id。