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 (将#修改为@)