问题描述
我有一个 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 (将#修改为@)