C++调用COM组件创建快捷方式。
创建完成后,马上要把创建好的.lnk文件复制到另一个位置,结果失败。
但是在创建完成后Sleep一段时间,就成功了。
推测是IPersistFile还没来得及写入文件。
我应该如何得知文件已经保存完成?
大致代码如下:
bool create_succ = false;
CoInitialize(NULL);
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLinkA, (void**)&pShellLink);
if (SUCCEEDED(hres))
{
pShellLink->SetPath(target_path);
IPersistFile *pPersistFile;
hres = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
if (SUCCEEDED(hres))
{
hres = pPersistFile->Save(link_file, TRUE);
if (SUCCEEDED(hres))
{
create_succ = true;
}
pPersistFile->Release();
}
pShellLink->Release();
}
CoUninitialize();
// Sleep(1000); // 加上这句就能成功
if (create_succ)
{
CopyFile(link_file, dest);
}
之前没怎么用过COM,望知道的指点一下,多谢~