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);