我尝试使用 IShellLink 和 IPersistFIle 接口创建一个新的快捷链接文件。在我通过调用 IPersistFIle::save() 完成保存 lnk 文件后,我想在 save 函数返回后立即删除用于创建 lnk 的 ico 文件。但问题是 lnk 文件显示在空白页中,而不是我使用的图标。
如果我在保存后不调用 deletefile(),则 lnk 文件看起来是正确的。
我的问题是保存lnk文件后什么时候可以删除图标文件?
PS:我试着在删除文件前 2 秒睡觉,而且 lnk 看起来也正确。
我的部分代码如下:
hRes = pShellLink->QueryInterface(IID_IPersistFile,(LPVOID*)&pPerFile);
if (SUCCEEDED(hRes))
{
WCHAR wszLinkFile[MAX_PATH + 1] = {0};
#ifdef _UNICODE
StringCchCopy(wszLinkFile, sizeof(wszLinkFile) / sizeof(wszLinkFile[0]), lpszLinkFilePath);
#else
MultiByteToWideChar(CP_ACP, 0, lpszLinkFilePath, -1, wszLinkFile, MAX_PATH);
#endif
hRes = pPerFile->Save(wszLinkFile, TRUE);
pPerFile->Release();
}
pShellLink->Release();
::CoUninitialize();
DeleteFile(lpszIconPath);