如何解决Qt app LNK:任务栏中的图标是LNK图标,不是应用程序图标
我有一个 Qt 应用程序,我需要在运行时将 LNK 保存到用户桌面中的 .exe 文件中
LNK 图标必须是我在运行时的像素图,与我的 .EXE 图标不同
当我使用那个 LNK(可以有多个不同的图标)时,我的应用程序启动了,但任务栏中的图标是 LNK 图标,而不是我的应用程序图标
我该如何解决?
QString sPathTarget = [MY_EXE_PATH];
QString sLinkName = "link name";
QString sLinkArguments = "link arguments";
QString sLinkIcon = [MY_ICON_PATH]; // This icon will be the LNK icon,but also the icon
// my app has in the taskbar when launched from the LNK
WCHAR pathDesktop[MAX_PATH];
HRESULT result = SHGetFolderPathW(NULL,CSIDL_DESKTOPDIRECTORY,NULL,pathDesktop);
if (SUCCEEDED(result)) {
QString linkPath = QDir(QString::fromWChararray(pathDesktop)).absoluteFilePath(QString("%1.lnk").arg(sLinkName));
CoInitialize(NULL);
IShellLinkW* shellLink = NULL;
result = CoCreateInstance(CLSID_ShellLink,CLSCTX_ALL,IID_IShellLinkW,(void**)&shellLink);
if (SUCCEEDED(result)) {
shellLink->SetPath(sPathTarget.toStdWString().c_str());
shellLink->SetArguments(sLinkArguments.toStdWString().c_str());
shellLink->SetIconLocation(sLinkIcon.toStdWString().c_str(),0);
IPersistFile* persistFile;
result = shellLink->QueryInterface(IID_IPersistFile,(void**)&persistFile);
if (SUCCEEDED(result)) {
result = persistFile->Save(linkPath.toStdWString().c_str(),TRUE);
persistFile->Release();
bRet = true;
}
shellLink->Release();
}
}
谢谢,
迭戈
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。